📅 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
August 3, 2026
ISO Week
2026-W32
2026-W32
Calendar Week
Week 32
Week 32 of 2026
Day of Week
1
Monday
📅 Calendar View
August 2026
Week
Mon
Tue
Wed
Thu
Fri
Sat
Sun
31
27
W31
28
W31
29
W31
30
W31
31
W31
1
W31
2
W31
32
3
W32
4
W32
5
W32
6
W32
7
W32
8
W32
9
W32
33
10
W33
11
W33
12
W33
13
W33
14
W33
15
W33
16
W33
34
17
W34
18
W34
19
W34
20
W34
21
W34
22
W34
23
W34
35
24
W35
25
W35
26
W35
27
W35
28
W35
29
W35
30
W35
36
31
W36
1
W36
2
W36
3
W36
4
W36
5
W36
6
W36
Selected Date
Edge Case
Other Month
Today
Safe Week Calculation Examples
// ❌ Avoid: Native Date methods for week calculations
const badWeek = new Date("2026-08-03").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-08-03");
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-08-03");
console.log('Week Number:', dt.weekNumber);
console.log('Week Year:', dt.weekYear);