Для записи, Я сделал ошибку, чтобы использовать класс DateTime . Это была большая ошибка. Хотя он имеет некоторые приятные функции, но это не стоит усилий. Я объясняю:
Допустим, у вас есть форма (с указателем даты), и вы сохраняете ее в базе данных, тогда у вас есть 3 формата для представления даты.
- Внутренне переменная имеет тип DateTime ()
- Визуально переменная, отображаемая для пользователя, представляет собой строку в формате дд-мм-гггг или мм-дд-гггг (зависит от региональных настроек)
- В базе данных сохраненная переменная также является строкой в формате гггг-мм-дд (ANSI)
Итак, я имею дело с 3 различными типами представления для одного и того же типа данных
Также, скажем, вы хотите сериализовать (json, xml или что-то подобное), это сериализация:
object(stdClass)#1 (1) {
["field1"]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2018-12-02 09:14:09.216273"
["timezone_type"]=>
int(3)
["timezone"]=>
string(30) "America/Argentina/Buenos_Aires"
}
}
Это настоящая боль, пытаться сериализовать.
Моя альтернатива проста: хранить любую временную дату в виде строки, и я преобразую ее в DateTime, только если это необходимо.
object(stdClass)#3 (1) {
["field1"]=>
string(19) "2018-12-02 09:14:09"
}