Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Представление даты и времени
В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке 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.Например:
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 Часовой пояс (имя или сокращение) %% Символ "%" Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.
Пример 4
<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>
РЕЗУЛЬТАТ ПРИМЕРА 4:Tuesday 15 November 2005 13:11 Сегодня вторник 15 Ноябрь 2005 13:11:14 Московское время (зима)
Еще примеры:
date("l dS of F Y h:i:s A") :
date("Сегодня d.m.Y") :
date("Этот файл датирован d.m.Y", filectime(__FILE__)) :
// Активизируем текущую локаль (иначе дата будет на английском). setlocale(LC_ALL, ''); // Выводим 2 предложения. echo strftime("%B %Y года, %d число. Был %A, часы показывали %H:%M.");
Вчерашний день:
$time = strtotime("-1 day"); $fecha = date("Y-m-d", $time);
Найти следующий рабочий день:
echo "Следующий рабочий день:".
date("d.m.Y",(intval(date("w")==0 ?
strtotime("next day") :
(intval(date("w")==6 ?
strtotime("+2 day") : strtotime("now") )))));