От автора: сколько времени? А какое сегодня число? Чтобы пользователи вашего сайта не задавались этими вопросами, используйте в PHP формат даты, который будет им понятен.
Часы и календарь
Конечно, можно «навешать» на сайте множество календарей и часов. Но это не решение проблемы – все равно вы не буду знать, как они работают. Лучше начинать с основ.
Чтобы система PHP могла возвращать время или дату, требуется временная метка (timestamp). Ее можно получить с помощью функции time():
При вычислении в PHP текущей даты и времени функция возвращает количество секунд, которое прошло с начала 1970г. Этот год считается началом эпохи Unix.
Чтобы проверить данное утверждение, разделим полученное с помощью time() число на количество секунд в году. А затем немного округлим это значение. С 1970 г. прошло примерно 47 лет.
1 2 3 4 |
<?php $a=round(time()/31536000,1); echo $a; ?> |
То есть, мы получили корректное значение от функции.
Вкапываемся
Также в PHP дата и время выводится с помощью других функций. Но во всех них в качестве необязательного аргумента используется timestamp, полученная через time().
Еще одна важная функция – date(). Посмотрим, какое значение она возвращает. Для этого результат ее работы отобразим в браузере. В зависимости от передаваемых аргументов можно вывести год, месяц, день или всю календарно-временную информацию о сегодняшнем дне:
Временные вычисления
Часто при написании кода нужно в PHP узнать дату создания файла. Для этого существует специальная функция, которая возвращает временную метку последнего изменения дескриптора файла в индексе ОС. В качестве параметра filectime () принимает путь к файлу.
Но такой формат данных не совсем удобен. Здесь нам опять пригодится функция date(). Передав ей в качестве второго (необязательного) аргумента временную метку из filectime(), мы узнаем дату последнего редактирования файла:
Разница между двумя датами
В PHP разница между датами в днях вычисляется несколькими способами. Можно «заморочиться» с временными метками, но легче использовать интерфейс DateTimeInterface. Точнее, его метод diff. Нам этого достаточно, поэтому более глубоко в дебри ООП «зарываться» не будем :). Перейдем к реализации:
1 2 3 4 5 6 |
<?php $d1=new DateTime('2017-03-30'); $d2=new DateTime('2017-03-01'); $day = $d2->diff($d1); echo $day->format('%R%a дней'); ?> |
Для перевода в PHP строки в дату реализована функция strtotime(), которая преобразует строковое представление во временную метку.
Все! Мое время закончилось. Да и силы тоже на исходе, поэтому получение формата даты PHP типа «минут назад» реализуете сами. Для этого у вас есть все козыри теперь «в рукаве» :).