我在 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。我可以准确提取年、日和月,但不能准确提取小时和分钟。
最佳答案
我在 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) ); "
关于javascript - 如何将日期和时间合并为 Google Apps 电子表格脚本中的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051239/