【问题标题】:Parsing date strings using google apps script使用谷歌应用脚​​本解析日期字符串
【发布时间】:2012-03-28 10:37:56
【问题描述】:

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

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

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 函数。我显然错过了一些简单的东西 - 谁能告诉我什么?

【问题讨论】:

    标签: timestamp google-apps-script


    【解决方案1】:

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

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

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

    【讨论】:

    • 我知道我错过了一些简单的东西,但这很尴尬。谢谢你放纵我 - 你的解决方案效果很好。
    【解决方案2】:

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

    【讨论】:

    • 他们有!使用这些肯定会让事情变得更容易 - 感谢您的提示。
    • 但现在已弃用?
    猜你喜欢
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多