PHP: простое вычисление количества дней между датами?
Эта статья устарела, решение проблемы есть, например, тут.
Понадобилось вывести очередное "количество дней", только средствами PHP.
Решение на методе DateTime::diff требует версии PHP не ниже 5.3.0, которая на данный момент есть далеко не на всех хостингах, особенно платных (изменился ряд глобальных настроек, скрипты пользователей могут перестать работать просто из-за короткого стиля тега PHP вместо длинного).
А вот этот совсем простой код, казалось бы, решает все проблемы:
<?php echo 'on server now is '.date("d.m.Y",strtotime("now")).', number of days = '; //дата пишется в формате ГГГГ-ММ-ДД! echo floor((strtotime("now")-strtotime("2000-12-31"))/86400); ?>
Вывод этого скрипта:
on server now is 24.03.2015, number of days = 5196
Увы, у такого подхода тоже есть недостатки - во-первых, функция strtotime
считает разницу дней относительно текущего времени на сервере, а оно может не совпадать с нужным Вам (у вас уже следующие сутки, а в Москве - нет).
Так что лучше выводить количество дней вместе с текущей датой сервера, во избежание недоразумений.
Во-вторых, функция strtotime во многих версиях PHP тоже глючна:
- В версиях PHP 5 до 5.2.7 глючило с первыми числами месяца;
- В версиях до 5.0.2 глючило даже "now".
Также до версии PHP 5.1.0 не все платформы поддерживают отрицательные метки времени, поэтому поддерживаемый диапазон дат может быть ограничен Эпохой Unix (даты ранее 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и ряде других операционных систем).
Стандартный мануал также не рекомендует использовать эту функцию для математических операций с датой/временем.
Так что, для определения "количества дней, которое живёт сайт" код вполне годится, но в качестве универсального решения может и не подходить.
24.03.2015, 17:24 [9129 просмотров]