📅 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
May 5, 2026
ISO Week
2026-W19
2026-W19
Calendar Week
Week 19
Week 19 of 2026
Day of Week
2
Tuesday

📅 Calendar View

May 2026

Week
Mon
Tue
Wed
Thu
Fri
Sat
Sun
18
27
W18
28
W18
29
W18
30
W18
1
W18
2
W18
3
W18
19
4
W19
5
W19
6
W19
7
W19
8
W19
9
W19
10
W19
20
11
W20
12
W20
13
W20
14
W20
15
W20
16
W20
17
W20
21
18
W21
19
W21
20
W21
21
W21
22
W21
23
W21
24
W21
22
25
W22
26
W22
27
W22
28
W22
29
W22
30
W22
31
W22
23
1
W23
2
W23
3
W23
4
W23
5
W23
6
W23
7
W23
Selected Date
Edge Case
Other Month
Today

Safe Week Calculation Examples

// ❌ Avoid: Native Date methods for week calculations
const badWeek = new Date("2026-05-05").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-05-05");
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-05-05");
console.log('Week Number:', dt.weekNumber);
console.log('Week Year:', dt.weekYear);