Рассмотрим, как работать с датами и временем в PHP.
Время в Unix-компьютерах
Для Unix-компьютеров начало отсчета времени –– полночь 1 января 1970 года. Любая дата вычисляется как количество секунд (обозначаемое timestamp –– метка времени), прошедших с 1.01.1970 года. Эти соглашения также используются в PHP. Например, мы хотим перейти на день вперед. Тогда нужно лишь добавить к текущему значению timestamp 60×60×24 секунд.
Такая схема учета времени существенно облегчает операции с датами. Например, если одно значение timestamp больше другого, первое значение соответствует более поздней дате, чем второе.
Единицы времени в сек
Сек | Время |
60 | Одна минута |
3600 | Один час |
28800 | 8 часов |
86400 | Один день |
604800 | Одна неделя |
Получение текущего времени
В PHP для получения текущего значения timestamp надо вызвать функцию time() без параметров, например:

Многие PHP-функции для работы с датой и временем в качестве аргумента принимают значение timestamp. Например, функция date() возвращает отформатированную в соответствии с заданным форматом строку даты, например:
Отображение текущей даты: " . date('d-m-Y') . "";
echo "Отображение текущего времени: " . date('H:i:s') . "
";
echo "Отображение текущей даты и времени: " . date('d-m-Y H:i:s') . "
";
echo "Отображение текущей даты и времени в длинном формате: " . date('d F Y, D - g:i:s A') . "
";
?>
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | — | — |
d | День месяца с 2-мя цифрами | от 01 до 31 |
D | День недели в текстовом формате, 3 символа | от Mon до Sun |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Месяц | — | — |
F | Полное название месяца, например, January или March | от January до December |
m | Порядковый номер месяца, 2 цифры | от 01 до 12 |
M | Сокращенное название месяца, 3 символа | от Jan до Dec |
Год | — | — |
Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2019 |
y | Порядковый номер года, 2 цифры | Примеры: 99, 19 |
Время | — | — |
a | Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
g | Часы в 12-часовом формате | от 1 до 12 |
G | Часы в 24-часовом формате | от 0 до 23 |
h | Часы в 12-часовом формате | от 01 до 12 |
H | Часы в 24-часовом формате, 2 цифры | от 00 до 23 |
i | Минуты, 2 цифры | от 00 до 59 |
s | Секунды, 2 цифры | от 00 до 59 |
Создание timestamp по дате
Функция mktime() создаст timestamp, если указать час, минуту, секунду, день месяца, месяц и год:
int mktime ( [int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year]]]]]] )
Здесь используются следующие данные:
- hour – Количество часов, прошедших с начала дня, указанного параметрами month, day и year.
- minute – Количество минут, прошедших от начала часа, указанного параметром hour.
- second – Количество секунд, прошедших от начала минуты, указанной параметром minute.
- month – Количество месяцев, прошедших с конца предыдущего года.
- day – Количество дней, прошедших с конца предыдущего месяца.
- year – Номер года, может быть указан двумя или четырьмя цифрами.

Функция strtotime()
Функция формирует timestamp для даты, указанной в виде фразы на английском, например April 1 или Friday.
Примеры:
Вызов | |
strtotime(«Friday») | Пятница, полночь |
strtotime(«2008-10-01») | 1 октября 2008 г, полночь |
strtotime(«-2 months») | Два месяца назад с текущего момента |
Значение даты нужно задавать в формате ГГГГ-ММ-ДД. Если функция strtotime не может преобразовать дату, она возвращает false.
Примеры использования функции date( )

Встроенная функция floor() используется для того, чтобы отбросить дробную часть результата.
Следующий текст при первом чтении можно пропустить
Форматы даты в базах данных MySQL
Формат timestamp в PHP несовместим с форматом timestamp в СУБД MySQL.
В MySQL есть три типа полей даты и времени: DATA (дата), TIME (время), DATETIME (дата и время). Также имеется специальный тип данных TIMESTAMP, который работает подобно DATETIME, но автоматически обновляется в соответствие с текущим временем при каждой вставке или обновлении записей таблицы.
Для преобразования timestamp в формате PHP в формат MySQL можно использовать такой код:
date("Y-m-d H:i:s", $timestamp)
Например, можем использовать «2008-10-01 13:23:40» как дату и время.
Чтобы получить PHP-timestamp из запроса SELECT, надо использовать SQL- функцию UNIX_TIMESTAMP():
SELECT UNIX_TIMESTAMP(дата) FROM таблица
В MySQL есть много и других полезных функций для работы с датой и временем.