如何使用 Luxon 从周数获取日期范围
How to get date range from week number with Luxon
我正在寻找一种方法来使用 Luxon 从周数中获取日期范围以替换我的 'moment' 代码。
今天我使用这段代码:
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
那:
Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.
传递 weekYear
(一个 ISO 周年)和weekNumber
(一个 ISO 周数,介于 1 和 52 或 53 之间, 取决于输入对象中的年份)。
这是一个活生生的例子:
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
passing ISO compliant format such as YYYY-Www
(see more on here)。请注意周数应为两位数。
我正在寻找一种方法来使用 Luxon 从周数中获取日期范围以替换我的 'moment' 代码。 今天我使用这段代码:
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
那:
Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.
传递 weekYear
(一个 ISO 周年)和weekNumber
(一个 ISO 周数,介于 1 和 52 或 53 之间, 取决于输入对象中的年份)。
这是一个活生生的例子:
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
passing ISO compliant format such as YYYY-Www
(see more on here)。请注意周数应为两位数。