(PHP 4, PHP 5)
date — Форматирует системную дату/время
Возвращает строку со временем, отформатированную в соответствии с указанным форматом, используя метку времени, заданную аргументом timestamp или текущее системное время, если timestamp не задан. Другими словами, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time().
Результирующая дата выводится в виде string. Смотрите параметры форматирования ниже. Имеется также несколько предопределенных констант даты/времени, которые можно использовать вместо данных параметров, например, DATE_RSS содержит форматирующую строку 'D, d M Y H:i:s'.
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | --- | --- |
d | День месяца, 2 цифры с ведущими нулями | от 01 до 31 |
D | Текствое представление дня недели, 3 символа | от Mon до Sun |
j | День месяца без ведущих нулей | от 1 до 31 |
l (строчная 'L') | Полное наименование дня недели | от Sunday до Saturday |
N | Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0) | от 1 (понедельник) до 7 (воскресенье) |
S | Английский суффикс порядкового числительного дня месяца, 2 символа | st, nd, rd или th. Применяется совместно с j |
w | Порядковый номер дня недели | от 0 (воскресенье) до 6 (суббота) |
z | Порядковый номер дня в году (начинается с 0) | От 0 до 365 |
Неделя | --- | --- |
W | Порядковый номер недели года в соответствии со стандартом ISO-8601, недели начинаются с понедельника (добавлено в версии PHP 4.1.0) | Например: 42 (42-я неделя года) |
Месяц | --- | --- |
F | Полное наименование месяца, например January или March | от January до December |
m | Порядковый номер месяца с ведущими нулями | от 01 до 12 |
M | Сокращенное наименование месяца, 3 символа | от Jan до Dec |
n | Порядковый номер месяца без ведущих нулей | от 1 до 12 |
t | Количество дней в указанном месяце | от 28 до 31 |
Год | --- | --- |
L | Признак високосного года | 1, если год високосный, иначе 0. |
o | Номер года в соответствии со стандартом ISO-8601. Имеет то же самое значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году, тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) | Примеры: 1999 или 2003 |
Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2003 |
y | Номер года, 2 цифры | Примеры: 99, 03 |
Время | --- | --- |
a | Ante meridiem или Post meridiem в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
B | Время в стадарте Swatch Internet | от 000 до 999 |
g | Часы в 12-часовом формате без ведущих нулей | от 1 до 12 |
G | Часы в 24-часовом формате без ведущих нулей | от 0 до 23 |
h | Часы в 12-часовом формате с ведущими нулями | от 01 до 12 |
H | Часы в 24-часовом формате с ведущими нулями | от 00 до 23 |
i | Минуты с ведущими нулями | от 00 до 59 |
s | Секунды с ведущими нулями | от 00 до 59 |
u | Микросекунды (добавлено в версии PHP 5.2.2) | Например: 654321 |
Часовой пояс | --- | --- |
e | Идентификатор часового пояса (добавлен в версии PHP 5.1.0) | Примеры: UTC, GMT, Atlantic/Azores |
I (заглавная i) | Признак летнего времени | 1, если дата соответствует летнему времени, иначе 0. |
O | Разница с временем по Гринвичу в часах | Например: +0200 |
P | Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в версии PHP 5.1.3) | Например: +02:00 |
T | Аббревиатура часового пояса | Примеры: EST, MDT ... |
Z | Смещение часового пояса в секундах. Для часовых поясов, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC - положительные. | от -43200 до 50400 |
Полная дата/время | --- | --- |
c | Дата в формате стандарта ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00 |
r | Дата в формате » RFC 2822 | Например: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) | Смотрите также time() |
Любые другие символы, встреченные в строке с форматом, будут выведены в результирующую строку без изменений. Z всегда возвращает 0 при использовании gmdate().
Замечание:
Так как эта функция принимает временные метки только типа integer, форматирующий символ u полезен только при использовании функции date_format() и метками времени, созданными пользователем с помощью функции date_create().
Необязательный параметр timestamp представляет собой integer метку времени, по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time().
Возвращает отформатированную строку с датой. При передаче нечислового значения в параметр timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING.
Каждый вызов к функциям даты/времени при неправильных настройках часового пояса вызовет ошибку уровня E_NOTICE, и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ. Смотрите также date_default_timezone_set()
Версия | Описание |
---|---|
5.1.0 | Допустимым диапазоном дат для временной метки обычно являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битного целого числа со знаком). Однако, до версии PHP 5.1.0 на некоторых системах (например, Windows) этот диапазон был ограничен датами 01-01-1970 до 19-01-2038. |
5.1.0 | Теперь ошибки, связанные с часовыми поясами вызывают ошибки уровня E_STRICT и E_NOTICE. |
5.1.1 | Существуют полезные константы некоторых стандартных форматов даты/времени, которые можно использовать в параметре format. |
Пример #1 Примеры использования функции date()
<?php
// установим часовой пояс по умолчанию. Доступно начиная с версии PHP 5.1
date_default_timezone_set('UTC');
// выведет что-то вроде: Monday
echo date("l");
// выведет что-то вроде: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// вывод: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* используем константы в качестве форматирующего параметра */
// выведет что-то вроде: Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);
// выведет что-то вроде: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
Избежать распознавания символа как форматирующего можно, если экранировать этот символ с помощью обратного слэша. Если после такого экранирования у вас уже получается управляющая последовательность, то следует проэкранировать сам обратный слэш также.
Пример #2 Экранирование символов в функции date()
<?php
// выведет что-то вроде: Wednesday the 15th
echo date("l \\t\h\e jS");
?>
Функции date() и mktime() для вывода прошедших и будущих дат.
Пример #3 Совместное использование date() и mktime()
<?php
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
?>
Замечание:
Этот метод более надежен, чем вычитание и прибавление секунд к метке времени, к примеру, из-за перехода на летнее/зимнее время.
Приведем еще несколько примеров использования функции date(). Помните, что следует экранировать все символы, которые вы хотите видеть в результате работы функции без изменений. Это относится и к символам, которые в текущей версии PHP не распознаются как специальные, так как этим символам может быть назначено значение в следующих версиях. При экранировании используйте одинарные кавычки для предотвращения преобразования управляющих последовательностей, например, \n в перевод строки.
Пример #4 Форматирование с использованием date()
<?php
// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся в часовом поясе Mountain Standard Time (MST)
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
?>
Для форматирования дат на других языках используйте функции setlocale() и strftime() вместо date().
Замечание:
Для получения метки времени из строкового представления даты можно использовать функцию strtotime(). Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).
Начиная с версии PHP 5.1, временную метку начала запроса можно получить из поля $_SERVER['REQUEST_TIME'].