📅 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
November 3, 2025
ISO Week
2025-W45
2025-W45
Calendar Week
Week 45
Week 45 of 2025
Day of Week
1
Monday

📅 Calendar View

November 2025

Week
Mon
Tue
Wed
Thu
Fri
Sat
Sun
44
27
W44
28
W44
29
W44
30
W44
31
W44
1
W44
2
W44
45
3
W45
4
W45
5
W45
6
W45
7
W45
8
W45
9
W45
46
10
W46
11
W46
12
W46
13
W46
14
W46
15
W46
16
W46
47
17
W47
18
W47
19
W47
20
W47
21
W47
22
W47
23
W47
48
24
W48
25
W48
26
W48
27
W48
28
W48
29
W48
30
W48
49
1
W49
2
W49
3
W49
4
W49
5
W49
6
W49
7
W49
Selected Date
Edge Case
Other Month
Today

Safe Week Calculation Examples

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