Работа с датами и временем на PHP

Рассмотрим, как работать с датами и временем в PHP.

Время в Unix-компьютерах

Для Unix-компьютеров начало отсчета времени –– полночь 1 января 1970 года. Любая дата вычисляется как количество секунд (обозначаемое timestamp –– метка времени), прошедших с 1.01.1970 года. Эти соглашения также используются в PHP. Например, мы хотим перейти на день вперед. Тогда нужно лишь добавить к текущему значению timestamp 60×60×24 секунд.

Такая схема учета времени существенно облегчает операции с датами. Например, если одно значение timestamp больше другого, первое значение соответствует более поздней дате, чем второе.

Единицы времени в сек

СекВремя
60Одна минута
3600Один час
288008 часов
86400Один день
604800Одна неделя

Получение текущего времени

В PHP для получения текущего значения timestamp надо вызвать функцию time() без параметров, например:

Сервера, Web и не только

Многие PHP-функции для работы с датой и временем в качестве аргумента принимают значение timestamp. Например, функция date() возвращает отформатированную в соответствии с заданным форматом строку даты, например:

				
					<?php
echo "<p>Отображение текущей даты: " . date('d-m-Y') . "</p>";
echo "<p>Отображение текущего времени: " . date('H:i:s') . "</p>";
echo "<p>Отображение текущей даты и времени: " . date('d-m-Y H:i:s') . "</p>";
echo "<p>Отображение текущей даты и времени в длинном формате: " . date('d F Y, D - g:i:s A') . "</p>";
?>
				
			
Символ в строке 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 цифры Примеры: 19992019
y Порядковый номер года, 2 цифры Примеры: 9919
Время
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 – Номер года, может быть указан двумя или четырьмя цифрами.
Сервера, Web и не только

Функция strtotime()

Функция формирует timestamp для даты, указанной в виде фразы на английском, например April 1 или Friday.

Примеры:

Вызов 
strtotime(«Friday»)Пятница, полночь
strtotime(«2008-10-01»)1 октября 2008 г, полночь
strtotime(«-2 months»)Два месяца назад с текущего момента

Значение даты нужно задавать в формате ГГГГ-ММ-ДД. Если функция strtotime не может преобразовать дату, она возвращает false.

Примеры использования функции date( )

Сервера, Web и не только

Встроенная функция 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 есть много и других полезных функций для работы с датой и временем.

Свежие записи
Команда RD

Команда RD и RMDIR позволяют удалять как каталоги, так и

Команда RENAME

RENAME что это? Команда RENAME позволяет переименовать файл или каталог.

Команда MD

Команда md позволяет создавать каталог или промежуточные каталоги в указанном

CMS и сайты
help2site
Защита от спама для любого сайта (JavaScript)

Cегодня мы поговорим про насущную проблему «СПАМ».  Способ решения данной проблемы позволит избавиться от спама на форме обратной связи, спам на комментарии или же спам на заказы в интернет магазине. Хотелось

CMS и сайты
help2site
Как сделать дизайн сайта правильно

Оглавление Дизайн сайта: некоторые ошибки оформления. Дизайн сайта имеет значение! И это не просто слова. Оно и понятно, – ведь любой человек старается выделиться не

Серверы и администрирование
help2site
Что такое веб-сервер / базовая теория

Основные понятия. Что такое веб-сервер. На этом занятии мы познакомимся с таким понятием как веб-сервер (web server). Посмотрим, что пишет по этому поводу Wikipedia: Веб-сервер

Windows и Windows Server
help2site
Как отключить стандартный брандмауэр Windows XP

У windows xp существует свой собственный фаервол. Кого-то он вполне устраивает, но из-за своей назойливости и навсегда стабильной работы, он не устраивает большинство пользователей. Чтобы

Серверы и администрирование
help2site
Расширение rds bar для браузера

Оглавление Расширение seo анализа сайта для заработка (да и для любого другого). В одной из статей блога я уже рассказывал про расширения для браузера, которые

CMS и сайты
help2site
Как сделать рерайт текста и не облажаться

Рерайт текста не только поможет начинающим блоггерам обрести опыт в написании статей для собственного блога, но это и способ заработка в интернете. Меня иногда спрашивают начинающие

CMS и сайты
help2site
Шорткоды для интернет магазина на WordPress + WooCommerce

В придыдущей статье мы разбирались что такое шорткод для WordPress, где они используются, ну и конечно же примеры шорт кодов для WordPress. В этой статье мы поговорим о шорткодах для интернет магазина на базе

Серверы и администрирование
help2site
Основные команды Linux

Оглавление Системная информация отобразить архитектуру компьютера — arch отобразить используемую версию ядра uname -r показать аппаратные системные компоненты — (SMBIOS / DMI) dmidecode -q вывести