📅 Week Number Explorer
Discover the mysteries of ISO week numbering. Why does December 30th sometimes belong to next year's week 1? Explore the edge cases that break business logic and confuse developers worldwide.
Edge case examples:
2025
📊 Date Analysis
Selected Date
September 11, 2025
ISO Week
2025-W37
2025-W37
Calendar Week
Week 37
Week 37 of 2025
Day of Week
4
Thursday
📅 Calendar View
September 2025
Week
Mon
Tue
Wed
Thu
Fri
Sat
Sun
36
1
W36
2
W36
3
W36
4
W36
5
W36
6
W36
7
W36
37
8
W37
9
W37
10
W37
11
W37
12
W37
13
W37
14
W37
38
15
W38
16
W38
17
W38
18
W38
19
W38
20
W38
21
W38
39
22
W39
23
W39
24
W39
25
W39
26
W39
27
W39
28
W39
40
29
W40
30
W40
1
W40
2
W40
3
W40
4
W40
5
W40
Selected Date
Edge Case
Other Month
Today
Safe Week Calculation Examples
// ❌ Avoid: Native Date methods for week calculations
const badWeek = new Date("2025-09-11").getWeek(); // Doesn't exist!
// ✅ Better: Use Day.js with ISO week plugin
import dayjs from 'dayjs';
import isoWeek from 'dayjs/plugin/isoWeek';
dayjs.extend(isoWeek);
const date = dayjs("2025-09-11");
console.log('ISO Week:', date.isoWeek());
console.log('ISO Week Year:', date.isoWeekYear());
console.log('ISO Week String:', `${date.isoWeekYear()}-W${String(date.isoWeek()).padStart(2, '0')}`);
// Check for edge cases
if (date.isoWeekYear() !== date.year()) {
console.log('⚠️ Edge case: ISO week year differs from calendar year');
}
// ✅ Alternative: Luxon
import { DateTime } from 'luxon';
const dt = DateTime.fromISO("2025-09-11");
console.log('Week Number:', dt.weekNumber);
console.log('Week Year:', dt.weekYear);