当我添加一个日历事件时,它在DST更改后1小时关闭。
我一直在大量地将日历事件添加到我的google日历中,但是在夏令变化之后,它变得一团糟。在我的执行日志中,时间从"GMT-0400 (东部夏令时间)“开始,但后来更改为"GMT-0500 (东方标准时间)”,我认为这会搞砸,但我不确定。
我用这个作为指南:https://developers.google.com/apps-script/advanced/calendar#reference
说明:基本上,我是用自己的时间戳写的,从Google中提取值,并为其制作一个日历事件。
要创建日历事件,需要一个开始和结束日期/时间。为了这个线程的目的,下面是开始日期/时间的一个小片段,后面是附带的日志输出:
var startDate = sheet.getRange(i + 1,2).getValue()
var startTimeHour = sheet.getRange(i + 1,3).getValue()
var startTimeMin = sheet.getRange (i + 1,4).getValue()
var startTimeMin = (startTimeMin / 60)
var startTime = new Date(startDate.getTime() + ((startTimeHour + startTimeMin) * 60 * 60 * 1000))
((startTimeHour + startTimeMin) * 60 * 60 *1000)= 21300000,即我想要的5小时55分钟,转换为毫秒
这才是棘手的地方。我增加了5小时55分钟,基本上是凌晨12点,应该是早上5点55分,但现在是4点55分,不知怎么说,时区现在是东部标准时间,而不是东部夏令时间。因此,基本上可以将命令简化为new Date(1667728500000)
。
start: {dateTime: startTime.toISOString()}
再次,这将添加到我的日历作为11/6/2022 4:55 AM
,这是不正确的。我要早上5点55分
发布于 2022-11-07 00:33:09
这是因为时间的变化。
在11月的第一个星期天,凌晨2点。东部时间,时钟被移回凌晨1点。EST
来源:维基百科
你的计算是正确的,但是你的事件在时间变化之前开始,在从东部时间到东部时间的变化和一个小时的停止之后结束。
发布于 2022-11-21 15:40:48
对于将来的参考和文档,使用UTC作为基本时区,因为它不受日光变化的影响,如果您将1667707200000转换为UTC (例如使用epochconverter.com ),它将导致Sunday, November 6, 2022 4:00:00 AM
。
添加5h55min与代码中的结果(2022-11-06T09: 55 :00.000Z)相匹配。
由于从EDT到EST的变化发生在世界协调时间上午6时-07时的等效时间框架内,所以计算是正确的。
若要补偿从“夏令”到“东方标准时间”的更改,必须向最终结果添加一个小时。
https://stackoverflow.com/questions/74340060
复制相似问题