【问题标题】:How to get date range from week number with Luxon如何使用 Luxon 从周数获取日期范围
【发布时间】:2021-06-22 04:26:38
【问题描述】:

我正在寻找一种方法来使用 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()”从月份数中做到这一点,但这不适用于“周”。所以我从周数中找不到最好的方法:(

提前致谢。

【问题讨论】:

    标签: javascript luxon


    【解决方案1】:

    您可以使用DateTime.fromObject

    使用具有合理默认值的“年”和“小时”等键从 JavaScript 对象创建 DateTime。

    通过weekYearISO 周年)和weekNumberISO 周数,介于 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 传递符合 ISO 标准的格式,例如 YYYY-Www(请参阅 here 的更多信息)。请注意,周数应为两位数。

    【讨论】:

    • 非常感谢,太完美了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2021-12-09
    • 2020-06-08
    相关资源
    最近更新 更多