Почему при использовании IntlDateFormatter в верхнем регистре Y отображается следующий год для дат, близких к концу годаPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему при использовании IntlDateFormatter в верхнем регистре Y отображается следующий год для дат, близких к концу года

Сообщение Anonymous »

В конце каждого месяца я хочу записать месяц в формате сербского латинского алфавита, чтобы записать месяц буквами и полный год.
Пример:

Код: Выделить всё

Januar 2024
Februar 2024
...
Decembar 2024
etc.
Это работало нормально для всех месяцев, за исключением крайнего случая для декабря, когда выходные данные приводили к следующему:

Код: Выделить всё

Decembar 2025
Пример:

Код: Выделить всё

$period = new DateTimeImmutable('2024-12-31');
$format = new IntlDateFormatter('sr-Latn', IntlDateFormatter::NONE, IntlDateFormatter::NONE, NULL,  IntlDateFormatter::GREGORIAN, "MMMM Y");
$label =  datefmt_format($format, $period);

echo $label;
Вывод: декабрь 2025 г.
месяц указан правильно, но год изменился
Результат тот же, даже если дата «2024-12-30», только если дата меньше «2024-12-29», правильный результат будет отображаться «декабрь 2024».< /p>

Код: Выделить всё

$period = new DateTimeImmutable('2024-12-30');
$format = new IntlDateFormatter('sr-Latn', IntlDateFormatter::NONE, IntlDateFormatter::NONE, NULL,  IntlDateFormatter::GREGORIAN, "MMMM Y");
$label =  datefmt_format($format, $period);

echo $label;
Итак, мой вопрос: может ли кто-нибудь объяснить это странное взаимодействие? Я ожидал, что это связано с часовыми поясами, но это объясняет, почему и 30, и 31 декабря приведут к одному и тому же результату. И почему меняется год, а не месяц, если это был часовой пояс, но я ожидаю, что это будет январь 2025 года, а не декабрь?
Проверено на php7.4 и php8.2< /p>
Часовой пояс по умолчанию: «Европа/Берлин»

Подробнее здесь: https://stackoverflow.com/questions/793 ... ar-end-whe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»