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)
唯一的方法 - 手工解析字符串:
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()
您可以使用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 创建格式化的日期时间字符串。 这是用于指定格式的令牌的参考。
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)