Примеры использования даты и времени на php
В распределенных системах, время играет особую роль. Из-за незначительного расхождения системных часов игрок на Forex может потерять тысячи долларов.
В статье
PHP дата и время
В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д. PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:
time( )
— возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX).
getdate( )
— считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:
seconds | Секунды (0-59) |
minutes | Минуты (0-59) |
hours | Часы (0-23) |
mday | День месяца (1-31) |
wday | День недели (0-6), начиная с воскресенья |
mon | Месяц (1-12) |
year | Год |
yday | День года (0-365) |
weekday | Название дня недели (например, Friday) |
month | Название месяца (например, January) |
0 | Абсолютное время |
Пример 1
<html> <head> <title>Использование getdate()</title> </head> <body> <?php $d = getdate(); // использовано текущее время foreach ( $d as $key => $val ) echo "$key = $val<br>"; echo "<hr>Сегодня: $d[mday].$d[mon].$d[year]"; ?> </body> </html>
Результат 1
seconds = 21 minutes = 4 hours = 12 mday = 10 wday = 4 mon = 11 year = 2005 yday = 313 weekday = Thursday month = November 0 = 1131613461 Сегодня: 10.11.2005
date( )
— форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:
a | Включено обозначение «am» или «pm» |
A | Включено обозначение «AM» или «PM» |
d | День месяца (01-31) |
D | Сокращенное название дня недели (три буквы) |
F | Полное название месяца |
g | Часы (12-часовой формат без ведущих нулей) |
G | Часы (24-часовой формат без ведущих нулей) |
h | Часы (12-часовой формат) |
H | Часы (24-часовой формат) |
i | Минуты (00-59) |
j | День месяца без ведущих нулей (1-31) |
l | Полное название дня недели |
L | Признак високосного года (0 или 1) |
m | Месяц (01-12) |
M | Сокращенное название месяца (три буквы) |
n | Месяц (1-12) |
s | Секунды (00-59) |
t | Количество дней в данном месяце (от 28 до 31) |
U | Абсолютное время |
w | Номер дня недели (0 — воскресенье, 6 — суббота) |
y | Год (два разряда) |
Y | Год (четыре разряда) |
z | День года (0-365) |
Z | Смещение часового пояса в секундах (от -43200 до 43200) |
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту «\». Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку «n», то надо ввести «\\n», поскольку «\n» является символом новой строки.
Пример 2
<html> <head> <title>Использование date()</title> </head> <body> <?php echo date( "Сегодня d.m.y H:i" ); ?> </body> </html>
Результат 2
Сегодня: 10.11.05 13:03
mktime( )
— возвращает абсолютное время, которое затем можно использовать с функциями date() getdate(). Принимает до шести целочисленных аргументов в следующем порядке:
- часы
- минуты
- секунды
- месяц
- день
- месяца
- год
Пример 3
<html> <head> <title>Использование mktime()</title> </head> <body> <?php echo date( "j of F Y, \a\\t g.i a, l", mktime( 13, 30, 0, 1, 22, 1971 ) ); ?> </body> </html>
Результат 3
22 of January 1971, at 1.30 pm, Friday
checkdate( )
— проверка правильности даты. Аргументы: месяц, день, год. Возвращает true, если дата правильная, т.е.
- месяц — целое число от 1 до 12;
- день — целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
- год — целое число от 1 до 32767.
Пример 4
if ( !checkdate( $month, 1, $year ) ) { $d = getdate(); $month = $d[mon]; $year = $d[year]; }
Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.
strftime( )
— формирование локальной даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate( )
Строка формата может содержать следующие коды:
%a | Сокращенное название дня недели |
%A | Полное название дня недели |
%b | Сокращенное название месяца |
%B | Полное название месяца |
%c | Предпочтительный формат даты и времени |
%C | Номер века |
%d | День месяца (1-31) |
%D | То же, что и %m/%d/%y |
%e | Месяц (1-12) |
%h | То же, что и %b |
%H | Часы (24-часовой формат) |
%I | Часы (12-часовой формат) |
%j | День года (0-365) |
%m | Месяц (1-12) |
%M | Минуты |
%n | Символ новой строки |
%p | Включено обозначение «am» или «pm» |
%r | Время с использованием a.m./p.m.-нотации |
%R | Время в 24-часовом формате |
%S | Секунды (00-59) |
%t | Символ табуляции |
%T | То же, что и %H:%M:%S |
%u | Номер дня недели (1 — понедельник, 7 — воскресенье) |
%U | Номер недели. Отсчет начинается с первого воскресенья года |
%V | Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем |
%W | Номер недели. Отсчет начинается с первого понедельника года |
%w | Номер дня недели (0 — воскресенье, 6 — суббота) |
%x | Предпочтительный формат даты без времени |
%X | Предпочтительный формат времени без даты |
%y | Год (два разряда) |
%Y | Год (четыре разряда) |
%Z | Часовой пояс (имя или сокращение) |
%% | Символ «%» |
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.
Пример 5
<html> <head> <title>Использование strftime()</title> </head> <body> <?php echo strftime("%A %d %B %Y %H:%M<br>"); error_reporting(E_ALL & ~E_WARNING); setlocale('LC_ALL',''); echo strftime("Сегодня %A %d %B %Y %X<br>"); echo strftime("%Z<br>"); ?> </body> </html>
Результат 5
Tuesday 15 November 2005 13:11 Сегодня вторник 15 Ноябрь 2005 13:11:14 Московское время (зима)
Примеры использования php для вывода даты и времени
Код: date("l dS of F Y h:i:s A") : Пример: Sunday 14th 2013f April 2013 11:52:06 AM
Код: date("Сегодня d.m.Y") : Пример: Сегодня 14.04.2013
Код: date("Этот файл датирован d.m.Y", filectime(__FILE__)) : Пример: Этот файл датирован 30.08.2011
Код: // Активизируем текущую локаль (иначе дата будет на английском). setlocale(LC_ALL, ''); // Выводим 2 предложения. echo strftime("%B %Y года, %d число. Был %A, часы показывали %H:%M."); Пример: April 2013 года, 14 число. Был Sunday, часы показывали 11:52.
Очень интересное решение по нахождению вчерашнего дня написал Bermuda с PHP Club: $time = strtotime("-1 day"); $fecha = date("Y-m-d", $time);