【问题标题】:Odd Issue of Date Changing in Script Output脚本输出中日期更改的奇怪问题
【发布时间】:2012-05-25 14:38:17
【问题描述】:

我的一位同事编写了一个 Google Apps 脚本来自动化工作流程(批准酒店的客房补偿请求)。总的来说,该脚本似乎按预期运行。脚本中有一个按自动计划运行的函数(基于时间,而不是事件驱动)。有好几次入住日期错了一个,导致预订错误。不幸的是,并非所有请求都发生这种情况。发出请求的所有相关用户都在同一时区 (EST)。

例如,我见过这样的事件,其中提交的请求的签入日期为 10/22,签出日期为 10/23,但是当脚本运行并且提交者收到批准通知时入住日期改为 10/21,退房日期改为 10/22。

HTML 电子邮件的相关部分只是从电子表格行中提取值: + "

" + "预计入住日期:" + Utilities.formatDate(row.arrivalDate, "EST", "MM-dd-yyyy") + "

" + "预计退房日期:" + Utilities.formatDate(row.departureDate, "EST", "MM-dd-yyyy")

什么可能导致这种行为?这可能是因为执行代码的给定 Google 服务器上的时间吗?

【问题讨论】:

  • 很抱歉问的很明显,但是您是否验证了电子表格和脚本时区设置? (每个都有一个)

标签: google-apps-script


【解决方案1】:

请确保电子表格的时区(位于文件>电子表格设置和脚本项目的时区(位于文件>项目属性)都已设置正确。电子表格的时区控制如何从单元格中读取日期/时间值,而脚本的时区控制新 Date 对象、触发器等的默认值。

【讨论】:

    【解决方案2】:

    根据我的经验,这可能是 EST 和 EDT 混淆的结果,尤其是在转换期间提交的数据。 让我举个例子:假设我们在冬季时间(EDT),并且提交了一个请求以 EST 为日期:如果您的脚本强制日期为 EST,则 EDT 日期将被误解。 根据您设置时间的方式,可能会导致白班。 我所做的从根本上解决了这个问题是在使用 Utilities.formatDate() 时考虑当前的夏季/冬季时间。 这里是我使用的代码sn-p,也许你可以试试:(我在欧洲,所以值不同但原理是一样的)

      var FUS1=new Date().toString().substr(25,8);// FUS1 gets the GMT+0200 or GMT+0100 string
    // Fri Sep 24 2010 10:00:00 GMT+0200 (CEST) for example
      if (FUS1!="GMT+0200"){FUS1="GMT+0100"};// and takes care of summer time !
      var today=Utilities.formatDate(new Date(),FUS1,"dd-MM-yyyy")+" à "+Utilities.formatDate(new Date(),FUS1,"HH:mm")
    

    有关完整描述,您可以查看我很久以前提出的this issue,这不是真正的问题;-)

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,但我的问题是在格式为 MM/dd/yyy 的表格中输入日期。 从电子表格中获取日期以发布到电子邮件时,总是少一天。

      我在东部时间 (GMT-5:00)。我在我的项目属性和电子表格设置中验证了它是正确的。在深入挖掘之后,我意识到虽然在表格中输入并显示在电子表格中的日期是 7/27/2012,但电子表格中的实际日期是:

      2012 年 7 月 26 日星期四 21:00:00 PDT

      这有“一些”意义,因为东部时间 2012 年 7 月 27 日 00:00:00 (GMT-5:00) 将比太平洋夏令时间的前一天早三个小时。我只是格式化了格林威治标准时间的日期。我本可以将它格式化为 EDT,它应该一直可以工作,但是如果代码需要随着季节的变化而改变,那么对它进行硬编码 GMT 或多或少地让其他人阅读代码时产生了猜测。我只需要日期。

      我确实复制并粘贴了这篇文章中的 FUS1 示例(现在作为 cmets)作为处理问题的更“雄辩”的方式。谢谢!

      【讨论】:

        猜你喜欢
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多