一周的第一天和最后一天不工作(从星期日开始)

时间:2017-08-31 22:54:55

标签: javascript function date time

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

这是我的代码:



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月。

有任何解决方法吗?

2 个答案:

答案 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