【发布时间】:2019-03-14 18:03:41
【问题描述】:
“欧洲/伦敦”(UTC +0) 时区的某个人创建了一个电子表格。他们在其中一个字段中输入日期“2019 年 3 月 22 日”。这代表日期3/22/2019 0:00 UTC+O。
我在“美国/洛杉矶”(UTC -7) 时区。当我运行 Google Apps 脚本并尝试获取该值时,它被评估为:
Thu Mar 21 17:00:00 GMT-07:00 2019
这是准确的,因为3/22/2019 0:00 UTC+O == 3/21/2019 17:00 UTC-7。
问题是当我尝试以编程方式获取日期时,我会得到 21 而不是 22。
例如,如果我尝试运行:
cellRange.getValue().getDate() // returns 21 even though the sheet shows the date as 22
这是因为getDate() 返回值“根据当地时间”。本地脚本时间是 UTC-7,因此它返回 21。
但是,这会导致不和谐:
- 电子表格日期:22(即我在表格中看到的值)
- 程序化日期:21(即上面
getDate()返回的那个)
例如,当我尝试使用诸如 joinDateAndTime_() 之类的函数时,将“2019 年 3 月 22 日”作为日期,将上午 6 点作为时间,这是有问题的。这会导致它生成日期“2019 年 3 月 21 日 6:00 UTC-7”而不是“2019 年 3 月 22 日 6:00 UTC-7”。
这里最好的解决方案是什么?
【问题讨论】:
-
使用 UTC?不允许在日期表示中出现歧义?
标签: datetime google-apps-script google-sheets timezone