📅 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
June 16, 2026
ISO Week
2026-W25
2026-W25
Calendar Week
Week 25
Week 25 of 2026
Day of Week
2
Tuesday

📅 Calendar View

June 2026

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

Safe Week Calculation Examples

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