首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Google脚本V8运行时中,日期/时间的处理方式是否不同?

在Google脚本V8运行时中,日期/时间的处理方式是否不同?
EN

Stack Overflow用户
提问于 2020-05-31 15:28:52
回答 1查看 166关注 0票数 1

最近我切换到了Google脚本中的V8运行时,我遇到了一个奇怪的问题。(我似乎无法以最小的格式复制。)

我的Google允许用户输入(单元格) 'work_start‘时间和'work_end’时间。现在我选择了"9:30“和"18:00”。使用旧的运行时,这将变成:

  • 1899年12月30日09: 30 GMT+0009 (中欧标准时间)
  • 1899年12月30日星期六18:00 GMT+0009 (中欧标准时间)

然而,当我切换到V8运行时,我得到了以下内容:

  • 1899年12月30日08:39:21 GMT+0009 (中欧标准时间)
  • 1899年12月30日17:09:21 GMT+0009 (中欧标准时间)

如果我立即再次运行它,在旧的运行时,它可以追溯到9:30和18:00。

我已经多次检查了我的代码,并将这些值设置了一次(作为全局值),但我从不更改它们。我只使用/读它们。我甚至在主函数的第一行设置了一个断点。

我建立了一个新的项目,并试图重新创建问题,但由于某种原因,问题没有出现在新的工作表。我也尝试过清除这两个单元格的格式。

接下来,我尝试了最后一件事。我将代码从全局空间移出并放入一个函数中,然后在下一行上有一个断点,以便检查变量:

代码语言:javascript
运行
复制
function Main() {
  var work_start = cal.getRange("G1").getValue(); // work start time
  var work_end = cal.getRange("G2").getValue(); // work end time
  var test = 0; // SET A BREAKPOINT HERE
  ...
}

这也给了我同样奇怪的结果: 8:39:21和17:09:21。(再说一次,只有当我的程序的一部分。在一张新的表格中,它给出了9:30和6:00,正如预期的那样。)

甚至不知道如何开始寻找这个错误的答案,所以任何帮助或指导都将受到感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 13:40:32

我还可以体验到单元格中的值与Apps脚本读取的值之间的50‘39’时间差。启用或禁用V8没有任何区别。

这是因为Sheet使用日期1899-12-30 0:00:00作为引用,而Apps脚本(以及大多数谷歌服务)使用Unix时间 (从1970-1-1 00:00:00 UTC开始)。闰秒在Unix时间内被忽略,所以可能是这样。

作为解决办法,您可以:

  • getDisplayValue代替获取值。
  • 将单元格格式设置为“纯文本”。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62118448

复制
相关文章

相似问题

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