Date/Time Функции
PHP Manual

date

(PHP 4, PHP 5)

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

Описание

string date ( string $format [, int $timestamp ] )

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

Список параметров

format

Результирующая дата выводится в виде string. Смотрите параметры форматирования ниже. Имеется также несколько предопределенных констант даты/времени, которые можно использовать вместо данных параметров, например, DATE_RSS содержит форматирующую строку 'D, d M Y H:i:s'.

В параметре format распознаются следующие символы
Символ в строке 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

Необязательный параметр 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(000712000));

/* используем константы в качестве форматирующего параметра */
// выведет что-то вроде: Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);

// выведет что-то вроде: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOMmktime(000712000));
?>

Избежать распознавания символа как форматирующего можно, если экранировать этот символ с помощью обратного слэша. Если после такого экранирования у вас уже получается управляющая последовательность, то следует проэкранировать сам обратный слэш также.

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

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

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

Пример #3 Совместное использование date() и mktime()

<?php
$tomorrow  
mktime(000date("m")  , date("d")+1date("Y"));
$lastmonth mktime(000date("m")-1date("d"),   date("Y"));
$nextyear  mktime(000date("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'].

Смотрите также


Date/Time Функции
PHP Manual