在google apps脚本中将字符串转换为日期

use*_*556 7 google-apps-script

我是GAS的新手(实际上也是编码的新手)我有一个yyyymmdd格式的日期字符串(例如20140807),我怎么能把它变成日期,以便Google应用程序脚本可以识别它,之后我可以做一些计算(主要是与今天比较var today = new Date();)

Google Apps脚本无法正确识别以下内容:

// string is in the format of yyyymmdd (eg. 20140807)
var pubdate = new Date(string)
Run Code Online (Sandbox Code Playgroud)

Vya*_*nov 8

唯一的方法 - 手工解析字符串:

var dateStr = "20140807"

var year = +dateStr.substring(0, 4)
var month = +dateStr.substring(4, 6)
var day = +dateStr.substring(6, 8)

var pubdate = new Date(year, month - 1, day)
Run Code Online (Sandbox Code Playgroud)

原因month - 1是月份数字从0开始.

+函数之前的符号只是将函数返回的字符串转换为数字,以便我们可以将它们直接传递给数字new Date()


kan*_*nji 8

您可以使用moment.js来解析 GAS 中的日期字符串。

首先,您需要将 moment.js 添加到您的 GAS 中。在脚本编辑器中,依次转到“资源”和“库...”,然后放置此项目密钥MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48并单击“添加”。从下拉列表中选择版本,然后单击“保存”。

用时刻解析日期就像这样简单。

var momentDate = Moment.moment("20140807", "YYYY/MM/DD");
Run Code Online (Sandbox Code Playgroud)

这里返回的是一个 moment 对象,它是 JavaScript 原生 Date 对象的包装器,对于日期操作非常方便。

但是,如果你仍然需要获取 JavaScript 的 Date 对象,你可以这样获取;

var date = momentDate.toDate();
Run Code Online (Sandbox Code Playgroud)

您还可以使用 moment.js 创建格式化的日期时间字符串。 是用于指定格式的令牌的参考。


Tan*_*ike 6

2022 年 11 月 3 日,类实用程序中添加了一个新方法。它是parseDate(date, timeZone, format)。通过该方法,可以解析日期字符串。当该方法用于 的日期字符串时20140807,示例脚本如下。

示例脚本:

function myFunction() {
  const str = "20140807";
  const dateObject = Utilities.parseDate(str, Session.getScriptTimeZone(), "yyyyMMdd");
  console.log(dateObject);
}
Run Code Online (Sandbox Code Playgroud)

参考: