【发布时间】:2020-09-30 17:05:37
【问题描述】:
例如,星期一是 9 月 28 日,从星期一开始一周,星期日是 10 月 4 日。我怎样才能得到一周的第一天和最后一天?到目前为止,解决方案仅涵盖属于同一个月的日期。请帮忙。谢谢
【问题讨论】:
标签: javascript
例如,星期一是 9 月 28 日,从星期一开始一周,星期日是 10 月 4 日。我怎样才能得到一周的第一天和最后一天?到目前为止,解决方案仅涵盖属于同一个月的日期。请帮忙。谢谢
【问题讨论】:
标签: javascript
您可以为此使用 date-fns 库:
const start = startOfWeek(date);
const end = endOfWeek(date);
查看这些主题以获得更多解决方案:
【讨论】:
您想研究Date.getDay() 方法。这将返回一个从 0 到 6 的数字,表示星期几(星期日为 0)。
作为一个函数,它可能如下所示:
function getMonday(date){
const originalDay = date.getDay();
const monday = 1;
const newDate = new Date(date);
const delta = originalDay === 0 ? 1 : originalDay - monday;
newDate.setDate(newDate.getDate() - delta);
return newDate;
}
【讨论】:
您可以在开始日期的时间上添加一周并构造一个新日期:
const DAY = 1000 * 60 * 60 * 24; // ms * seconds * minutes * hours
const WEEK = DAY * 7;
const today = new Date('2020-09-29');
const nextWeek = new Date(today.getTime() + WEEK);
console.log(nextWeek.toUTCString());
然后根据需要对该日期进行加法或减法,以获得一周的第一天/最后一天。
const DAY = 1000 * 60 * 60 * 24;
const WEEK = DAY * 7;
const today = new Date('2020-09-29');
const nextWeek = new Date(today.getTime() + WEEK);
const day = nextWeek.getDay(); // 0 sunday, 6 saturday
const firstDay = new Date(nextWeek.getTime() - (day * DAY));
const lastDay = new Date(nextWeek.getTime() + ((6 - day) * DAY));
console.log(firstDay.toUTCString()); // monday
console.log(lastDay.toUTCString()); // sunday
【讨论】: