【发布时间】:2018-02-09 23:35:19
【问题描述】:
我有这段代码,我可以在其中获取当前一周的第一天和最后一天(从星期日开始 - 在星期六结束)。本周工作正常直到今天换了月份。
这是我的代码:
// current date 1 Sep 2017
curr = new Date(2017, 8, 1);
console.log(curr.toString());
// Fri Sep 01 2017 00:00:00
// First day of week
var first = curr.getDate() - curr.getDay();
// Last day week
var last = first + 6;
var startDate = new Date(curr.setDate(first));
console.log(startDate.toString());
// Sun Aug 27 2017 00:00:00
var endDate = new Date(curr.setDate(last));
console.log(endDate.toString());
// Wed Aug 02 2017 00:00:00
所以问题是,endDate 应该是 Sat Sep 02 而不是 Wed Aug 02
在月份从 8 月更改为 9 月之前,这一直运行良好。
有什么办法可以解决这个问题?
【问题讨论】:
-
似乎是正确的。你用的是什么浏览器?
-
@ochi endDate 显示为 Wed Aug 02,而应该是 Sat Sep 02
-
在实行夏令时的地方,并非所有日子都是 24 小时。使用
60 * 60 * 24 * 7添加一天是不明智的,请参阅Add +1 to current date。此外,您可能应该将时间设置为 00:00:00。 -
你看到@Will 的答案了吗? - 我看到
Thu Aug 31 2017 17:44:31 GMT-0700 (Pacific Daylight Time) Sun Aug 27 2017 17:44:31 GMT-0700 (Pacific Daylight Time) Sat Sep 02 2017 17:44:31 GMT-0700 (Pacific Daylight Time) -
@ochi 我有
Wed Aug 02 2017 04:10:54 GMT+0300作为endDate。所以只是因为时区不同?
标签: javascript function date time