Функция даты в PHP
Давайте попробуем поэкспериментировать с этой функцией и выведем даты в совершенно разных форматах. В том числе не текущие даты, а даты через несколько дней, часов или секунд.Приступим с примера:
<?php
$a = date('d.m.Y H:i:s');
echo $a;
?>
В результате выполнения этого кода в браузере появится текущая дата (дата, на которой работает сервер) в формате "ДД.ММ.ГГГГ ЧЧ:ММ:СС". Как можно догадаться, каждый символ в скобках date( ... ) выводит часть даты в своём формате. Точки и двоеточия переносятся как есть. Разберём часть возможных и самых популярных вариаций:
- d - номер дня в месяце. Если меньше 10, то с нулём: "09", "05"
- m - номер месяца. Если меньше 10, то с нулём: "09", "05"
- Y - год, 4 цифры.
- y - год, две цифры.
- n - номер месяца. Без первого нуля, если меньше 10
- j - номер дня в месяце. Без первого нуля, если меньше 10
- H - часы в 24-часовом формате. Если меньше 10, то с нулём: "09", "05"
- s - секунды. Если меньше 10, то с нулём: "09", "05"
- i - минуты. Если меньше 10, то с нулём: "09", "05"
- z - номер дня от начала года.
- w - день недели (0 - воскресенье, 1 - понедельник и т.д.).
- h - часы в 12-часовом формате
- L - 1, если високосный год, 0, если не високосный.
- W - порядковый номер недели года.
- U - количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
<?php
$a = time() + 3600 * 24 * 3; // В часе 3600 секунд. В дне 24 часа. И надо 3 дня.
echo date('d.m.Y H:i:s', $a);
?>
В результате выполнения такого кода мы узнаем дату и время в формате "ДД.ММ.ГГГГ ЧЧ:ММ:СС" через 3 дня. Или говоря в секундах, через 3600 * 24 * 3 секунд. Можно не только прибавлять, но и отнимать секунды, чтобы получить дату в прошлом. Такой способ вычисления даты является одним из самых простых, но для полноценного использования ещё нужная функция, которая переводит дату из любого формата в timestamp. Такая функция есть и называется strtotime( ). В качестве аргумента она принимает дату в любом формате. Но лучше использовать очевидные форматы типа "ДД.ММ.ГГГГ ЧЧ:ММ:СС". Тогда она правильно разберётся, что относится к году, а что ко дню. Попробуем её на практике:
<?php
$a = '20.06.2019'; // равно дате с нулевым временем '20.06.2019 00:00:00'
echo strtotime($a); // результат 1560978000
$a = '20.06.2019 14:16:29';
$b = strtotime($a);
echo $b; // результат 1561029389
echo date('d.m.Y H:i', $b); // результат 20.06.2019 14:16
echo date('d-m', $b); // результат 20-06
$b += 3600 * 24 * 3; // добавляем три дня
echo date('d.m.Y', $b); // результат 23.06.2019
$b -= 3600 * 24 * 3; // отнимаем три дня
echo date('d.m.Y', $b); // результат 20.06.2019
?>