Представление даты в PHP: преодоление ограничения 2038 года
Хотя собственные функции даты PHP имеют отсечку в 2038 году, существуют альтернативные подходы для обработки дат, выходящих за рамки этого ограничения. Один из таких подходов — хранить только год, месяц и день, игнорируя компоненты часов, минут, секунд и миллисекунд.
Отбрасывая эти дополнительные компоненты времени, вы значительно расширяете диапазон представимых дат. Это связано с тем, что каждый из этих компонентов занимает часть представления в миллисекундах, используемого внутри PHP.
Использование класса DateTime
Для этой цели вы можете используйте класс DateTime. В отличие от функции даты, DateTime представляет компоненты времени независимо. Для хранения и отслеживания даты он использует комбинацию временных меток и часовых поясов Unix.
$date = new DateTime(); $date->setDate(5000, 12, 31); echo $date->format('Y-m-d'); // Outputs "5000-12-31"
Вычисление года, месяца и дня
С помощью класса DateTime вы можете выполнять вычисления по году, месяцу, и компоненты дня индивидуально. Например, чтобы добавить к дате 100 лет:
$date->add(new DateInterval(['y' => 100])); echo $date->format('Y-m-d'); // Outputs "5100-12-31"
Используя этот подход, вы можете расширить свои вычисления даты далеко за пределы ограничений, налагаемых представлением даты PHP по умолчанию. Однако важно отметить, что класс DateTime по-прежнему поддерживает контекст часового пояса, поэтому на операции, включающие часовые пояса или сравнение времени, все равно может распространяться ограничение 2038 года.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3