Руководство по PHP
Пред. |  | След.

# date

(PHP 3, PHP 4, PHP 5)

date -- Форматирует системную дату/время

## Описание

string date ( string format [, int timestamp] )

Возвращает время, отформатированное в соответствии с аргументом `format`, используя метку времени, заданную аргументом `timestamp` или текущее системное время, если `timestamp` не задан. Другими словами, `timestamp` является необязательным и по умолчанию равен значению, возвращаемому функцией time().

> Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038.

> Замечание: Для получения метки времени из строкового представления даты можно использовать функцию strtotime(). Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (напрмер, функция MySQL UNIX_TIMESTAMP).

Таблица 1. В параметре `format` распознаются следующие символы

Символ в строке `format` | Описание | Пример возвращаемого значения
--- | --- | ---
`a` | Ante meridiem или Post meridiem в нижнем регистре | `am` или `pm`
`A` | Ante meridiem или Post meridiem в верхнем регистре | `AM` или `PM`
`B` | Время в стадарте Swatch Internet | От `000` до `999`
`c` | Дата в формате ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00
`d` | День месяца, 2 цифры с ведущими нулями | от `01` до `31`
`D` | Сокращенное наименование дня недели, 3 символа | от `Mon` до `Sun`
`F` | Полное наименование месяца, например January или March | от `January` до `December`
`g` | Часы в 12-часовом формате без ведущих нулей | От `1` до `12`
`G` | Часы в 24-часовом формате без ведущих нулей | От `0` до `23`
`h` | Часы в 12-часовом формате с ведущими нулями | От `01` до `12`
`H` | Часы в 24-часовом формате с ведущими нулями | От `00` до `23`
`i` | Минуты с ведущими нулями | `00` to `59`
`I` (заглавная i) | Признак летнего времени | `1`, если дата соответствует летнему времени, иначе `0` otherwise.
`j` | День месяца без ведущих нулей | От `1` до `31`
`l` (строчная 'L') | Полное наименование дня недели | От `Sunday` до `Saturday`
`L` | Признак високосного года | `1`, если год високосный, иначе `0`.
`m` | Порядковый номер месяца с ведущими нулями | От `01` до `12`
`M` | Сокращенное наименование месяца, 3 символа | От `Jan` до `Dec`
`n` | Порядковый номер месяца без ведущих нулей | От `1` до `12`
`O` | Разница с временем по Гринвичу в часах | Например: `+0200`
`r` | Дата в формате RFC 2822 | Например: `Thu, 21 Dec 2000 16:01:07 +0200`
`s` | Секунды с ведущими нулями | От `00` до `59`
`S` | Английский суффикс порядкового числительного дня месяца, 2 символа | `st`, `nd`, `rd` или `th`. Применяется совместно с `j`
`t` | Количество дней в месяце | От `28` до `31`
`T` | Временная зона на сервере | Примеры: `EST`, `MDT` ...
`U` | Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) | См. также time()
`w` | Порядковый номер дня недели | От `0` (воскресенье) до `6` (суббота)
`W` | Порядковый номер недели года по ISO-8601, первый день недели - понедельник (добавлено в PHP 4.1.0) | Например: `42` (42-я неделя года)
`Y` | Порядковый номер года, 4 цифры | Примеры: `1999`, `2003`
`y` | Номер года, 2 цифры | Примеры: `99`, `03`
`z` | Порядковый номер дня в году (нумерация с 0) | От `0` до `365`
`Z` | Смещение временной зоны в секундах. Для временных зон западнее UTC это отрицательное число, восточнее UTC - положительное. | От `-43200` до `43200`

Любые другие символы, встреченные в строке `format`, будут выведены в результирующую строку без изменений. `Z` всегда возвращает `0` при использовании gmdate().

Пример 1. Примеры использования функции date()

`<?php // вывод дня недели, например Wednesday echo date("l"); // вывод даты в формате: Wednesday 15th of January 2003 05:51:38 AM echo date("l dS 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)); ?>`

Избежать распознавания символа как форматирующего можно, если экранировать этот символ с помощью `\` Если в сочетании с `\` символ являееся специальным (например, `\t`), следует добавлять еще один `\`.

Пример 2. Экранирование символов в функции date()

`<?php // вывод: Wednesday the 15th echo date("l \\t\h\e jS"); ?>`

Функции date() и mktime() для вывода прошедших и будущих дат.

Пример 3. date() и mktime() example

`<?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); ?>`

> Замечание: Этот метод более надежен, чем вычитание и прибавление секунд к метке времени, так как mktime() учитывает любые неоднозначности в датах (переход на летнее/зимнее время и др.).

Приведем еще несколько примеров использования функции date(). Помните, что следует экранировать все символы, которые вы хотите видеть в результате работы функции без изменений. Это относится и к символам, которые в текущей версии PHP не распознаются как специальные, так как этим символам может быть назначено значение в следующих версиях. Используйте одинарные кавычки для предотвращения преобразования \n в перевод строки.

Пример 4. Форматирование с использованием date()

`<?php
// Предположим, что текущая дата March 10th, 2001, 5:16:18 pm
$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 z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$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 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
$today = date("H:i:s"); // 17:16:17
?>`

Для форматирования дат на других языках используйте функции setlocale() и strftime().

См. также описание функций getlastmod(), gmdate(), mktime(), strftime() и time().

Пред. | Начало | След.
date_timezone_set | Уровень выше | getdate