时刻添加的 DST 转换问题
DST conversion issue with moment add
我正在尝试添加 DST 时区的小时数。时间已正确添加,但未识别 DST 时区。
示例:我将 4 小时加到 "Sat Oct 31 2015 20:00:00 GMT-0400",即(东部夏令时)。添加 4 小时后,我得到 "Sun Nov 01 2015 00:00:00 GMT-0400"。预期结果是 "Sun Nov 01 2015 00:00:00 GMT-0500",因为夏令时将于 2015 年 11 月 1 日结束。
测试时将本地计算机时区设置为 (UTC-05:00) 东部时间(美国和加拿大)。
var date1 = moment('2015-10-31T20:00:00-04:00').toString();
console.log(date1)
output- Sat Oct 31 2015 20:00:00 GMT-0400
var convertedDate = moment($scope.date1).add('hours',4).toString();
console.log(convertedDate)
output- Sun Nov 01 2015 00:00:00 GMT-0400
Plunker : http://plnkr.co/edit/nF06r0YEjOk78F4QbtvF?p=preview
-吉米特
"Currently, daylight saving time starts on the second Sunday in March
and ends on the first Sunday in November, with the time changes taking
place at 2:00 a.m. local time."
的确,您可以看到夏令时在 5 到 6 小时轮班之间变化。
几件事
请更新您的问题以在 Whosebug 此处显示您的代码。您应该只显示提出问题所必需的部分。
查看您在 Plunker 上的代码,您应该更喜欢使用 format
而不是 toString
,但这不是问题的原因。
此外,您正在创建一个字符串只是为了再次解析它,这是低效的并且有时会导致错误。虽然这也不是这里的原因。
主要问题是您假设 DST 在美国东部时区午夜结束,而实际上它在 2:00 AM 结束。一毫秒后,时钟将从 2015-11-01T01:59:59.999-04:00
前进到 2015-11-01T01:00:00.00-05:00
。
Moment 可以很好地处理这个问题。
请注意我突出显示的部分,显示 1:00 小时由于 DST 回退而随着偏移量的变化而重复。
我正在尝试添加 DST 时区的小时数。时间已正确添加,但未识别 DST 时区。
示例:我将 4 小时加到 "Sat Oct 31 2015 20:00:00 GMT-0400",即(东部夏令时)。添加 4 小时后,我得到 "Sun Nov 01 2015 00:00:00 GMT-0400"。预期结果是 "Sun Nov 01 2015 00:00:00 GMT-0500",因为夏令时将于 2015 年 11 月 1 日结束。
测试时将本地计算机时区设置为 (UTC-05:00) 东部时间(美国和加拿大)。
var date1 = moment('2015-10-31T20:00:00-04:00').toString();
console.log(date1)
output- Sat Oct 31 2015 20:00:00 GMT-0400
var convertedDate = moment($scope.date1).add('hours',4).toString();
console.log(convertedDate)
output- Sun Nov 01 2015 00:00:00 GMT-0400
Plunker : http://plnkr.co/edit/nF06r0YEjOk78F4QbtvF?p=preview
-吉米特
"Currently, daylight saving time starts on the second Sunday in March and ends on the first Sunday in November, with the time changes taking place at 2:00 a.m. local time."
的确,您可以看到夏令时在 5 到 6 小时轮班之间变化。
几件事
请更新您的问题以在 Whosebug 此处显示您的代码。您应该只显示提出问题所必需的部分。
查看您在 Plunker 上的代码,您应该更喜欢使用
format
而不是toString
,但这不是问题的原因。此外,您正在创建一个字符串只是为了再次解析它,这是低效的并且有时会导致错误。虽然这也不是这里的原因。
主要问题是您假设 DST 在美国东部时区午夜结束,而实际上它在 2:00 AM 结束。一毫秒后,时钟将从
2015-11-01T01:59:59.999-04:00
前进到2015-11-01T01:00:00.00-05:00
。Moment 可以很好地处理这个问题。
请注意我突出显示的部分,显示 1:00 小时由于 DST 回退而随着偏移量的变化而重复。