首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google电子表格上的日期与脚本记录器中的日期不同。这是时区问题吗?

Google电子表格上的日期与脚本记录器中的日期不同。这是时区问题吗?
EN

Stack Overflow用户
提问于 2015-03-12 21:24:46
回答 3查看 2.7K关注 0票数 4

我已经输入了谷歌电子表格特定的日期,电子邮件应该发送。我有一个脚本,它将电子表格中的值获取到(1)比较“日期电子邮件应该发送”是否等于今天,如果是,运行脚本或(2)输入到电子表格的今天的日期,即“电子邮件发送日期”。

我看到记录器报告比实际在电子表格中的日期晚了一天。示例:电子表格显示3/11/2015,记录器显示Tue Mar 10 22:00:00 PDT 2015, GMT-6:00, MM-dd-yyyy。这是夏令时的结果吗?我读过一些类似的与DST和脚本/触发器/电子表格有关的问题。

脚本项目的时区和电子表格本身都被设置为GMT-6 (中央时间),因此没有差异。在时间变化之前,我(据我所知)没有这个问题。Session.getTimeZone()虽然贬值,但返回正确的时区(GMT-6)。

如果我使用new Date(),它将正确返回今天的日期。当我使用Utilities.formatDate(sheet.getRange("A1:A1").getValue(), "GMT-6", "MM-dd-yyyy"); (其中单元格A1包含日期)时,它在日志中报告为在电子表格上显示的实际日期之后的1天。

我尝试过的:

  1. 将时区格式化为"GMT-6:00“,而不是仅仅将"GMT-6”格式化没有什么区别,尽管用户Sergi建议更改这里
  2. 我尝试从电子表格(使用=today())引用“今天的日期”,而不是通过new Date ()脚本。这仍然是问题的根源。当脚本记录“日期电子邮件被发送(今天)”回到电子表格,它显示为1天后。

其他选项? 关于Google脚本问题的答案#6和Sergi的回答再次建议将其转换为字符串。有人能解释(1)这样做有什么区别吗?(2)如果引用一个单元格值而不是new Date,我将如何编写它。在定义FUS1变量之后,情况会是这样吗?

代码语言:javascript
复制
 Utilities.formatDate(sheet.getRange("A1:A1").getValue(), FUS1 , "MMM-dd-yyyy h:mm a");

谢谢!!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-16 18:05:39

我想我可能已经找到了我自己问题的答案。此报告的谷歌脚本问题# 1035表示formatDate实用程序正在错误地从电子表格读取日期。

这个答案和线程中的这个答案专门提供了一个解决方案,该解决方案目前似乎正在工作。具体来说,我们必须使用特定的时区名称(如维基百科中的这里 ),而不是使用时区格式"GMT-6:00“或"GMT-”的任何变体。所以,对于中央时间,我已经输入了这个,似乎已经修复了我的问题。如果这个修补程序不起作用,我会向您报告。

代码语言:javascript
复制
var emailDate = Utilities.formatDate(sheet.getRange("A1:A1").getValue(), "US/Central", "MM-dd-yyyy");
票数 5
EN

Stack Overflow用户

发布于 2015-03-12 23:14:05

当您在Google工作表的单元格中键入日期时,它不会自动记录当前时间。当您在工作表单元格中手动键入日期时,时间设置为0:00:00。一天中什么时候不重要,如果只输入日期,时间设置将始终是0:00:00。因此,您在代码中使用的任何时区设置(试图影响hour )都会影响相对于0记录时间的时间。因此,除非您显式地键入当前时间以及日期,否则在手动输入日期时,时间将被设置为0:00:00

如果希望在将日期放入单元格时记录时间,则可以在单元格中输入一个函数:

代码语言:javascript
复制
=now()

然后复制单元格,并粘贴,仅用于特殊值。

否则,您将需要手动键入的时间和日期。您可以通过将单元格的日期/时间格式更改为Date time来测试这一点。

因此,这个问题可能与您的代码无关。

票数 1
EN

Stack Overflow用户

发布于 2021-04-15 05:22:13

到目前为止,Google支持为您创建的每个工作表设置时区。

我通过文件>电子表格设置>地区修复了这个问题,并确保它符合我的本地时间。我的约会对象离我只有2小时了,这让我发疯了。

我的预感是,Google脚本编辑器根据浏览器当前的本地日期/时间正确地计算了新的Date()对象,而电子表格则默认为不同的时区。对我来说,这是东部时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29020486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档