📅 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
February 4, 2026
ISO Week
2026-W06
2026-W06
Calendar Week
Week 6
Week 6 of 2026
Day of Week
3
Wednesday

📅 Calendar View

February 2026

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

Safe Week Calculation Examples

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