Дата и время в PHP
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"; echo "Сегодня: $d[mday].$d[mon].$d[year]"; ?> </body> </html>
mon = 11
Сегодня: 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>
mktime( ) - возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate(). Принимает до шести целочисленных аргументов в следующем порядке:
часы
минуты
секунды
месяц
день месяца
год
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");
error_reporting(E_ALL & ~E_WARNING);
setlocale('LC_ALL','');
echo strftime("Сегодня %A %d %B %Y %X<br>");
echo strftime("%Z");
?>
</body>
</html>
Еще примеры:
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.");
Очень интересное решение по нахождению вчерашнего дня написал Bermuda с PHP Club:
$time = strtotime("-1 day");
$fecha = date("Y-m-d", $time);
Рекомендуем почитать

