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

标签 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。我可以准确提取年、日和月,但不能准确提取小时和分钟。

最佳答案

我在 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/

相关文章:

php - Laravel/Carbon 中的多时区

javascript - 从一张谷歌工作表中获取值,将其输入到另一张带有 4 个循环的工作表上

javascript - 如何使用 JavaScript 在新窗口中插入滚动条?

javascript - 在 Div 容器中时,Swiper coverflow 为空白

python - 有没有办法在 Python 中对 1900 年之前的日期使用类似 strftime 的函数?

c# - DateTime.ParseExact 抛出格式异常

google-apps-script - var userProperties = PropertiesService.getUserProperties();不适合我?

javascript - 在 Google 电子表格上花费时间

javascript - 使 jQuery 搜索过滤器使用 Data 属性而不是整个 DIV 内容

javascript - 为什么我不能在 Chrome 中使用内容文档访问 SVG 文件,但在 Firefox 中可以?