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