获取指定日期是当年的第几周
比如1月7号 才是2019年的第一周
而且1月6号是2018年的最后一周
/**
* @desc 获取日期是当年的第几周
*
* @param bool sunday 每一周是否从周日开始
*/
Date.prototype.getWeek = function(sunday = false) {
const milliseconds = 24 * 3600000;
let start = new Date(this.getFullYear() + '/01/01');
let offset = start.getDay() > 0 ? (8 - start.getDay()) : 1;
offset = sunday ? offset - 1 : offset;
return Math.abs(Math.ceil((this.getTime() - start.getTime() - offset * milliseconds) / milliseconds / 7));
}
看来今天是有点闲了~~
可以这样的思路:
假设给的时间是一个Date对象,如果不是也可以转为时间对象。
基于该时间对象重新创建一个时间对象,并且把月份和日期都设置为当年的年初一月一日
用给定的时间的毫秒值减去年初的毫秒值
再用这个值去除一个星期对应的毫秒值。向上取整。就能得出是该年的第几周了。
代码大致如下:
const targetDate = new Date();
const startDate = new Date(targetDate);
startDate.setMonth(0);
startDate.setDate(1);
startDate.setHours(0,0,0,0);
const millisecondsOfWeek = 1000 * 60 * 60 * 24 * 7;
const diff = targetDate.valueOf() - startDate.valueOf();
console.log('week of the year', Math.ceil(diff / millisecondsOfWeek);
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
function getWeek(date){