Рассмотрим, как работать с датами и временем в 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() возвращает отформатированную в соответствии с заданным форматом строку даты, например:
Создание timestamp по дате
Функция mktime() создаст timestamp, если указать час, минуту, секунду, день месяца, месяц и год:
Функция 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 есть много и других полезных функций для работы с датой и временем.