如何使用Luxon从周数获取日期范围

问题描述

我正在寻找一种使用 Luxon 从周数获取日期范围的方法,以替换我的“时刻”代码。 今天我正在使用这个代码

m = moment(yearNumber + "-W" + weekNumber);
dateFromStr = moment(m.startOf('week')).add(1,'day'); // To get Monday 00:00:00
datetoStr = moment(m.endOf('week')).add(1,'day'); // To get Sunday 23:59:59

我找到了一种方法,可以使用“DateTime.fromObject()”从月份数字中做到这一点,但这不适用于“week”。所以我没有从周数中找到最好的方法:(

提前致谢。

解决方法

您可以使用 DateTime.fromObject

从 JavaScript 对象创建一个 DateTime,其键为 'year' 和 'hour',并具有合理的默认值。

传递 weekYearISO 周年)和 weekNumberISO 周数,介于 1 到 52 或 53 之间,具体取决于年份 em>) 在输入对象中。

这是一个活生生的例子:

const DateTime = luxon.DateTime;
const yearNumber = 2020;
const weekNumber = 3;
const dt = DateTime.fromObject({
  weekYear: yearNumber,weekNumber: weekNumber
});

const dateFromStr = dt.startOf('week');
console.log(dateFromStr.toISO()); // last Monday at 00:00:00
const dateToStr = dt.endOf('week');
console.log(dateToStr.toISO()); // next Sunday at 23:59:59
<script src="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.js"></script>

您还可以使用 DateTime.fromISO 传递 ISO 兼容格式,例如 YYYY-Www(有关 here 的更多信息)。请注意,周数应为两位数。