【发布时间】:2020-01-09 14:23:50
【问题描述】:
我正在制作日历。我的日历上的事件每年在一周的同一天重复。
例如:
eventOne,星期日 (0),第 3 周
eventTwo,星期二 (2),第 12 周
EventOne 应该有一个日期对象,该对象始终是当年第 3 周的星期日。
EventTwo 应该有一个日期对象,该对象始终是当年第 12 周的星期二。
function getDateOfISOWeek(w, y) {
var simple = new Date(y, 0, 1 + (w - 1) * 7)
var dow = simple.getDay()
var ISOweekStart = simple
if (dow <= 4)
ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1)
else
ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay())
return ISOweekStart
}
const date = getDateOfISOWeek(3, 2020)
console.log(date)
上述函数将为我提供我请求的一周的第一天,但没有实现一周中的某一天,我一直在努力寻找一个 Date 函数来执行此操作。
如果有任何方便的功能可以提供帮助,我很乐意使用 moment 或 date-fns,但如果我可以使用原生 javascript 解决方案,我会更喜欢。
【问题讨论】:
-
您的日期是时区规定的一周开始。我看到了 1 月 12 日星期日 23:00 - 你到底有什么问题?
-
顺便说一句,1 月 12 日是第二个星期日,而不是您正在寻找的第三个星期日
-
所以“1 月第 3 周的星期日”是固定的,或者您希望能够更改它?
-
如果第三周是固定的,那么为什么要将周参数传递给 getDateISOWeek?
-
好吧,我希望日期始终在第 3 周,星期三,没有考虑到我想调整到的星期几。
标签: javascript date