Skip to content

IntlDateFormatter for December 30/31st 2024 returns "December 30/31st 2025" (same for 2026 and so on) #17382

@bohwaz

Description

@bohwaz

Description

The following code:

<?php
date_default_timezone_set('Europe/Paris');

$date = new DateTime('2024-12-30 00:00:00');
$format = 'd MMMM YYYY';
echo IntlDateFormatter::formatObject($date, $format, 'fr_FR') . PHP_EOL;
echo IntlDateFormatter::formatObject($date, $format, 'en_NZ') . PHP_EOL;

Resulted in this output:

30 décembre 2025
30 December 2025

But I expected this output instead:

30 décembre 2024
30 December 2024

This is the same with December 31st.

Same with 2025-12-30: reports as 2026.

It is even weirder with 2026-12-30:

<?php
date_default_timezone_set('Europe/Paris');
$date = new DateTime('2026-12-30 00:00:00');
$format = 'd MMMM YYYY';
echo IntlDateFormatter::formatObject($date, $format, 'fr_FR') . PHP_EOL;
echo IntlDateFormatter::formatObject($date, $format, 'en_NZ') . PHP_EOL;

Returns:

30 décembre 2026
30 December 2027

PHP Version

8.4.1

Operating System

Debian Bookworm

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions