如何在Google Apps电子表格脚本中合并日期和时间为日期时间?

6
我在Google应用电子表格中有一个“dd/mm/yyyy”格式的日期列和一个“HH:MM AM/PM”格式的时间列。在应用脚本中,我想将这两个值连接为一个日期时间。我该怎么做?
例如,日期:2010年12月13日,时间:下午4:30 然后,我想得到一个组合值,例如“2010年12月13日下午4:30”作为日期时间对象。
我尝试使用JavaScript函数getYear、getDay分别解析日期和时间。并创建了一个新的日期。
new Date(year, month, day, hours, minutes)

但是由于某种原因,时间“4:30”被显示为一个完整的奇怪日期,例如1899年11月30日上午10:30。我可以准确提取年份、日期和月份,但无法提取小时和分钟。

1个回答

5
我在这个Google应用脚本论坛帖子中找到了答案。
首先,日期和时间(除了格式)没有区别,它们都是Date对象。现在来看问题所在: 电子表格中日期/时间的值是自“时代”以来的天数,因此“时间”实际上是该数字的小数部分。如果您在电子表格中输入0(零),然后选择日期时间格式,您将看到时代是当前时区下的“1899年12月30日0:00:00”。即在不同的电子表格中,配置不同的时区,时代可能会改变。如果在两个电子表格中操作相同的数字值(例如使用ImportRange),则会出现不同的情况。这对我来说非常奇怪。虽然不是一直这样,但谷歌似乎认为这对用户更好,因为如果更改电子表格的时区设置,则日期不会在视觉上更改,例如,如果您在电子表格中键入“1/1/10 14:00”,然后将时区更改为任何其他时区,日期/时间仍将保持为14:00。
现在,在GAS中,时代是“1970年1月1日0:00:00 GMT+0”,无论时区如何。因此,时代不同,时区也可能不同。这使得在GAS和电子表格之间操作日期变得非常混乱。 要测试GAS的时代,请执行range.setValue(new Date(0));

Google Apps论坛主题的URL已经失效。 - Felix Jassler
Google Apps论坛主题的URL已经失效,http://www.google.com/support/forum/p/apps-script/thread?tid=3a13ba469261f883&hl=en 无法使用。 - nabil sellami
供其他找不到合适建议的人参考,这个可能会有所帮助。请查看@Andre Duarte在此处的回答:https://stackoverflow.com/a/57285206/10789707 - Lod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接