📅 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
December 19, 2025
ISO Week
2025-W51
2025-W51
Calendar Week
Week 51
Week 51 of 2025
Day of Week
5
Friday

📅 Calendar View

December 2025

Week
Mon
Tue
Wed
Thu
Fri
Sat
Sun
49
1
W49
2
W49
3
W49
4
W49
5
W49
6
W49
7
W49
50
8
W50
9
W50
10
W50
11
W50
12
W50
13
W50
14
W50
51
15
W51
16
W51
17
W51
18
W51
19
W51
20
W51
21
W51
52
22
W52
23
W52
24
W52
25
W52
26
W52
27
W52
28
W52
26W1
29
W1
30
W1
31
W1
1
W1
2
W1
3
W1
4
W1
Selected Date
Edge Case
Other Month
Today

Safe Week Calculation Examples

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