【发布时间】:2020-11-09 07:14:45
【问题描述】:
我有一个 javascript 函数,它根据周数计算日期范围
Date.prototype.getWeek = function weekCalc() {
const date = new Date(this.getTime());
date.setHours(0, 0, 0, 0);
date.setDate((date.getDate() + 3 - (date.getDay() + 6)) % 7);
const week1 = new Date(date.getFullYear(), 0, 4);
return 1 + Math.round((((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6)) % 7) / 7);
};
const getDateRangeOfWeek = (weekNo, y) => {
const d1 = new Date(`${y}`);
const pastDays = d1.getDay() - 1;
d1.setDate(d1.getDate() - pastDays);
d1.setDate(d1.getDate() + 7 * (weekNo - d1.getWeek()));
const rangeIsFrom = `${`0${d1.getDate()}`.slice(-2)}/${`0${d1.getMonth() + 1}`.slice(-2)}/${d1.getFullYear().toString().substring(2)}`;
d1.setDate(d1.getDate() + 6);
const rangeIsTo = `${`0${d1.getDate()}`.slice(-2)}/${`0${d1.getMonth() + 1}`.slice(-2)}/${d1.getFullYear().toString().substring(2)}`;
return `${rangeIsFrom}-${rangeIsTo}`;
};
console.log(getDateRangeOfWeek(52, 2016));
当您根据 ISO 8061 在 2016 年第 52 周对其进行测试时,它会给出
getDateRangeOfWeek(52, 2016);
"19/12/16-25/12/16"
这有点不正确,请查看https://www.calendar-week.org/2016/52
我不确定上面的实现出了什么问题?
【问题讨论】:
标签: javascript