我有这个代码,我得到当前一周的第一天和最后一天(从星期日开始 - 在星期六结束)。本周工作正常直到今天月份发生了变化。
这是我的代码:
lowResources idleTimeout: 1000
lowResources maxConnections: 15000

问题是,// 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
应该星期六02月2日不是8月2日星期二
这个工作正常,直到月份从8月改为9月。
有任何解决方法吗?
答案 0 :(得分:1)
我明白了。结束日期未正确设置。试试这个。
let curr = new Date();
console.log(curr.toString());
let startDate = new Date(curr.setDate(curr.getDate() - curr.getDay()));
console.log(startDate.toString());
let endDate = new Date(curr.setDate(curr.getDate() + 6));
console.log(endDate.toString());

答案 1 :(得分:0)
我认为这是重复的,但我现在无法找到。您的问题是您调整日期的方式。日期方法会修改它们被调用的日期,因此您可以随时修改 curr ,但将其视为没有更改。
$img
这不是添加1天的好方法,但不是你的问题。最好先将时间归零,然后在日期中添加一个。
// current date
curr = new Date(new Date().getTime() + 60 * 60 * 24 * 7);
将首先设置为-4(日期为1,星期五为5)。
console.log(curr);
// Fri Sep 01 2017 01:52:15
// First day of week
var first = curr.getDate() - curr.getDay();
将 last 设置为2(-4 + 6)。
// Last day week
var last = first + 6;
这会将 curr 修改为8月27日。然后复制它以创建分配给 startDate 的新日期(即 curr 和 startDate 具有相同的时间值并代表相同的日期和时间)。
var startDate = new Date(curr.setDate(first));
是的。现在,您将 curr 的日期设置为2,即8月2日。
console.log(startDate);
// Sun Aug 27 2017 01:57:25
是的。作为替代方案,复制原始日期并修改副本以获取 startDate ,然后获取另一个副本并在结束日期对其进行修改。
var endDate = new Date(curr.setDate(last));
console.log(endDate);
// Wed Aug 02 2017 01:59:37