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

时间:2010-10-29 11:11:38

标签: javascript datetime google-apps-script date-manipulation

我在Google App电子表格中有'dd / mm / yyyy'格式的日期列和'HH:MM AM / PM'格式的时间列。在应用程序脚本中,我想将这两个值作为日期时间加入。我怎么能这样做?

示例日期:2010年12月13日,时间:下午4:30 然后我希望获得像'13 / 12/2010 4:30 PM'这样的组合值作为日期时间对象。

我尝试使用getYear,getDay JS函数分别解析日期和时间。并使用

创建了一个新日期
new Date(year, month, day, hours, minutes)

但由于某种原因,时间'4:30'被显示为完全奇怪的日期,如1899年11月30日上午10:30。我可以准确地提取年,日和月,但不能提取小时和分钟。

1 个答案:

答案 0 :(得分:4)

我在this Google Apps论坛帖子中得到了答案。

“首先,日期和时间之间没有区别(除了格式化),它们都是Date对象。现在问题.. 电子表格中日期/时间值的数字是自“纪元”以来的天数,因此“时间”实际上是数字的小数部分。如果您在电子表格中键入0(零)然后选择日期时间格式,您会在电子表格当前时区看到纪元是“12/30/1899 0:00:00”。即,在配置有不同时区的不同电子表格中,时期可以改变。如果您在两个电子表格中操作相同的数字值(例如使用ImportRange),您将会有所不同。这种行为对我来说很奇怪。它并不总是这样,但谷歌似乎认为这对用户更好,因为如果更改电子表格时区设置,日期将不会在视觉上改变,例如如果您在电子表格中键入“1/1/10 14:00”,然后将时区更改为任何其他时区,则日期/时间不会更改。在新时区仍然是14:00。

现在,在GAS中,时代是“1/1/1970 0:00:00 GMT + 0”,现在时区很重要。所以,时代是不同的,也很可能是时区。这使得GAS和电子表格之间的操作日期完全混乱。 要测试GAS纪元,请执行range.setValue(new Date(0)); “