【问题标题】:Having trouble working with dates in Google Apps Script在 Google Apps 脚本中处理日期时遇到问题
【发布时间】:2020-06-29 21:32:42
【问题描述】:

我正在使用 Google 表格中的多个日期,但它似乎总是将日期作为字符串输入。

sheet.getRange(3,11,sheet.getLastRow()-3, 1).setValue(Utilities.formatDate(new Date(), "UTC-5", "dd/MM/yyyy"));

是我输入日期的方式,但是当我测试它时

Logger.log(typeof extractedDate); 它告诉我它是一个字符串。

如果我正在处理数百个日期,在我看来,每次都必须将每个日期解析为字符串并进行转换,这将是一种巨大的时间/资源浪费。

【问题讨论】:

    标签: javascript datetime google-apps-script google-sheets


    【解决方案1】:

    而不是

    sheet.getRange(3,11,sheet.getLastRow()-3, 1).setValue(Utilities.formatDate(new Date(), "UTC-5", "dd/MM/yyyy"));
    

    使用

    sheet.getRange(3,11,sheet.getLastRow()-3, 1).setValue(new Date());
    

    上面会将当前日期和时间粘贴到电子表格中,电子表格将根据单元格格式显示。

    如果你想在没有时间的情况下传递日期,请使用new Date()

    new Date(new Date().getFullYear(),new Date().getMonth() , new Date().getDate())
    

    更好的选择

    var now = new Date();
    var today = now.setHours(0,0,0,0);
    sheet.getRange(3,11,sheet.getLastRow()-3, 1).setValue(today);
    

    相关

    【讨论】:

    • "如果您想在没有时间的情况下传递日期......" 执行new Date(new Date().setHours(0,0,0,0)) 的代码更少(效率更高)。 ;-)
    • 谢谢@Rubén 但现在它只显示为这个很长的数字。我该如何解决?它设置在哪个时区?
    • @Rubén——也没有更多。更少的代码创建 2 个日期并调用 1 个方法,而更长的代码则调用 4 个日期和 3 个方法,因此效率更高(并且键入/发送/解析/等的更少)。 ;-)
    • @TzviL — 日期对象没有时区,它们始终创建为 UTC。在上述答案中创建的日期将是主机系统时区 00:00:00 的当前日期,因此可能是不同的 UTC 日期。只要您使用本地方法(即名称中没有 UTC 或 ISO 的方法),您就会获得主机系统时区的值。
    猜你喜欢
    • 2018-12-29
    • 2015-05-11
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    相关资源
    最近更新 更多