使用谷歌应用程序脚本解析日期字符串

时间:2012-03-11 23:53:47

标签: timestamp google-apps-script

我是谷歌应用程序脚本的新手,我在从UiApp表单解析日期字符串时遇到问题。在这个例子中,我正在编写一个脚本,允许用户在指定的日期范围内过滤带时间戳的电子表格。

我的问题是,当以传统的javascript格式dateFromField传递日期字符串(来自名为YYYY,M,D的文本框)时,下面的代码会返回无效的日期对象(即2012,1,2 2012年2月2日):

function dateFilter(e) {
  var fromDate = new Date(e.parameter.dateFromField);
} 

我已检查e.parameter.dateFromField是否正确返回给定字符串(Logger.log(e.parameter.dateFromField);返回2012,1,2),并且其类型为字符串(而不是对象)。

但是,如果我直接在函数中输入日期字符串,即:

function dateFilter(e) {
  var fromDate = new Date(2012,1,2);
} 

我获得了一个有效的日期对象。我不明白这两个例子之间的区别 - 据我所知,它们是等价的;在两个实例中,字符串2012,1,2都被传递给new Date函数。我显然错过了一些简单的事情 - 谁能告诉我什么?

2 个答案:

答案 0 :(得分:5)

当您手动输入时,实际上传递了3个数字参数,而不是带有逗号分隔数字列表的字符串。

我猜你可以在传递之前拆分你的参数,例如

var dateParts = e.parameter.dataFromField.split(',');
var fromDate = new Date(dateParts[0], dateParts[1], dateParts[2]);

答案 1 :(得分:2)

我建议在UiApp中使用DateBox和DatePicker类而不是文本框。它们返回一个实际的日期对象,因此根本不需要解析。它们刚刚添加到Apps脚本文档中。请参阅here