Вы не поверите, в ёбаном Симфони снова приключилась злоебучая пизда. И снова с блядской сериализацией объектов, а конкретнее с DateTime. Как думаете, в каком виде по-умолчанию JMS Serializer выводит даты? Делает он это примерно так: 2018-08-09T11:01:25+0000. Пиздец! Хорошо хоть в JavaScript есть стандартная функция для преобразования подобных дат в timestamp:

Date.parse('2018-08-07T13:43:28+0300')

Но можно ли как-то в Symfony 3.4 заставить JMS Serializer выдавать все DateTime значения в виде timestamp. Можно, но только через жопоеблю. Нужно ручками отредактировать каждый класс с Entity и добавить в аннотации тег @JMS\Type:

/**
     * @var \DateTime
     * @JMS\Type("DateTime<'U'>")
     */
    private $updated_at;

Не забыв при этом подключить соответствующий неймспейс:

use JMS\Serializer\Annotation as JMS;

А что, если таких классов десятки и в каждом как минимум по 2 значения с датой, а ты заебёшся! Давайте процитирую что спизданул по этому поводу автор этой библиотеки:

Если используется пакет jms serializer, то по умолчанию используется формат DateTime::ISO8601 (который несовместим с ISO-8601, несмотря на имя). Для jms/serializer-bundle формат по умолчанию DateTime::ATOM (настоящий формат ISO-8601), но его можно изменить в конфигурации.

Вот так выглядят определения этих форматов:

const ISO8601 = 'Y-m-d\TH:i:sO';
const ATOM = 'Y-m-d\TH:i:sP';

То есть если не использовать дополнительную обёртку в виде блядского злоебучего бандла-хуяндла, то сменить формат сериализации дат по умолчанию нихуя не выйдет. Бляять, только этого ещё не хватала, ставить дополнительный бандл ради того чтобы поменять формат даты по умолчанию! Пизданутые мрази. Сука Симфони рот ебал!

Что можно почитать на эту тему

  • https://jmsyst.com/libs/serializer/master/reference/annotations

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть