How to get date range from week number with Luxon
Asked Answered
S

1

5

I'm searching a way to get date range from week number with Luxon to replace my 'moment' code. Today I'm using this code:

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

I found a way to do that from a month number with 'DateTime.fromObject()' but that's doesn't work with 'week'. So I don't find the best way to do that from a week number :(

Thank's in advance.

Siliculose answered 25/3, 2021 at 11:14 Comment(0)
D
9

You can use DateTime.fromObject that:

Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.

passing weekYear (an ISO week year) and weekNumber (an ISO week number, between 1 and 52 or 53, depending on the year) in the input object.

Here an live example:

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/[email protected]/build/global/luxon.js"></script>

You can also use DateTime.fromISO passing ISO compliant format such as YYYY-Www (see more on here). Please note that week number should be two digits.

Drown answered 25/3, 2021 at 14:8 Comment(1)
Thank's a lot, That's perfect :)Siliculose

© 2022 - 2024 — McMap. All rights reserved.