Symfony / PHP DateTimeZone отсутствуют часовые пояса

У меня есть Symfony API, который сохраняет часовой пояс пользователя как часть процесса входа в систему. Однако кажется, что определенные часовые пояса вызывают ошибку. Используя 'America/Buenos_Aires' в качестве примера отправляемого значения, следующий код вызывает ошибку 500.

$validator->validate($request->request, new Assert\Collection([
        'username' => new AppAssert\Chain([
            new Assert\Type('string'),
            new Assert\NotBlank(),
        ]),
        'password' => new AppAssert\Chain([
            new Assert\Type('string'),
            new Assert\NotBlank(),
        ]),
        'timezone' => new AppAssert\Chain([
            new Assert\Type('string'),
            new Assert\NotIdenticalTo(''),
            new Assert\Choice([
                'choices' => \DateTimeZone::listIdentifiers(),
                'strict' => true,
            ]),
        ]),
    ]));

Глядя на этот пост https://bugs.php.net/bug.php?id=70816, в нем говорится об использовании DateTimeZone::ALL_WITH_BC, который я пробовал

'choices' => \DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC),

но до сих пор нет авиалайнера.

Клиент использует Moment JS, который иногда возвращает America/Argentina/Buenos_Aires, а иногда America/Buenos_Aires, но America/Argentina/Buenos_Aires работает нормально.

Вроде America/Argentina/Buenos_Aires

mblaettermann 25.10.2018 12:44

Moment JS, похоже, возвращает и то, и другое. Иногда America/Argentina/Buenos_Aires и America/Buenos_Aires, последний ошибается.

colouredFunk 25.10.2018 14:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
83
1

Ответы 1

Я наконец понял, мне не хватало \ на DateTimeZone::ALL_WITH_BC

Полный правильный код

 'timezone' => new AppAssert\Chain([
            new Assert\Type('string'),
            new Assert\NotIdenticalTo(''),
            new Assert\Choice([
                'choices' => \DateTimeZone::listIdentifiers(\DateTimeZone::ALL_WITH_BC),
                'strict' => true,
            ]),
        ]),

Другие вопросы по теме