【发布时间】:2018-11-19 04:05:27
【问题描述】:
我有这个函数,它返回一个新的Date 实例,从传递的Date 对象中添加或减去天数。
function daysFrom(date, numDays) {
var retDate = new Date();
retDate.setDate(date.getDate() + numDays);
return retDate;
}
但是现在(在太平洋时区),如果我通过了 2018 年 9 月 19 日之后的日期,我的两个日期在标准时间和夏令时中是不一致的。
var endDate = new Date(Date.parse('19 September 2018 00:12:00 GMT'));
var startDate = daysFrom(endDate, -5);
console.log(startDate, endDate);
// Tue Sep 18 2018 17:12:00 GMT-0700 (Pacific Daylight Time) Tue Nov 13 2018 20:05:02 GMT-0800 (Pacific Standard Time)
我想它们会有所不同,因为我返回的日期是今天实例化的,因为我们不在 DST 中,但是确保返回的日期是一年中时间的正确模式的最简单方法是什么?在 2019 年,DST 将于 3 月 10 日开始,所以如果我从中减去 x 天数,我希望时间模式(不管它叫什么)是标准的,而不是 DST。
什么是模式(夏令时 vs 标准)?
使用当前版本的 Chrome 浏览器。
【问题讨论】:
-
在
new Date(Date.parse('19 September 2018 00:12:00 GMT'))中使用Date.parse 是多余的。此外,这不是 ECMAScript 支持的格式,因此解析依赖于实现。
标签: javascript date