БлогNot. PHP: простое вычисление количества дней между датами?

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

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.1.0 не все платформы поддерживают отрицательные метки времени, поэтому поддерживаемый диапазон дат может быть ограничен Эпохой Unix (даты ранее 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и ряде других операционных систем).

Стандартный мануал также не рекомендует использовать эту функцию для математических операций с датой/временем.

Так что, для определения "количества дней, которое живёт сайт" код вполне годится, но в качестве универсального решения может и не подходить.


теги: php дата время ошибка

комментарии (0)

24.03.2015, 17:24; рейтинг: 6703

  свежие записипоиск по блогукомментироватьстатистика

Наверх Яндекс.Метрика
© PerS
вход