📅 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:
2026
📊 Date Analysis
Selected Date
March 21, 2026
ISO Week
2026-W12
2026-W12
Calendar Week
Week 12
Week 12 of 2026
Day of Week
6
Saturday
📅 Calendar View
March 2026
Week
Mon
Tue
Wed
Thu
Fri
Sat
Sun
9
23
W9
24
W9
25
W9
26
W9
27
W9
28
W9
1
W9
10
2
W10
3
W10
4
W10
5
W10
6
W10
7
W10
8
W10
11
9
W11
10
W11
11
W11
12
W11
13
W11
14
W11
15
W11
12
16
W12
17
W12
18
W12
19
W12
20
W12
21
W12
22
W12
13
23
W13
24
W13
25
W13
26
W13
27
W13
28
W13
29
W13
14
30
W14
31
W14
1
W14
2
W14
3
W14
4
W14
5
W14
Selected Date
Edge Case
Other Month
Today
Safe Week Calculation Examples
// ❌ Avoid: Native Date methods for week calculations
const badWeek = new Date("2026-03-21").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("2026-03-21");
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("2026-03-21");
console.log('Week Number:', dt.weekNumber);
console.log('Week Year:', dt.weekYear);