Работа с датами и временем на 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 позволяет создавать каталог или промежуточные каталоги в указанном

Разработка сайтов
help2site
Руководство к дескрипторам

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

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

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

CMS и сайты
help2site
Продажа доступа к материалам в Drupal Commerce

В этой статье мы разберемся как организовать платный доступ к определенным разделам сайта на базе Drupal + Commerce Не давно мене нужно было сделать сайт с платным контентом, доступ

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

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

Серверы и администрирование
help2site
Как установить Apache на Windows

Apache HTTP Server можно запустить на Windows как локальный веб-сервер для разработки и тестирования сайтов. После установки вы сможете открывать сайты через — http://localhost/ а