Описание 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.
Таблица 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()
// вывод дня недели, например 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()
// вывод: Wednesday the 15th echo date ( «l \\t\h\e jS» ); ?>
Функции date() и mktime() для вывода прошедших и будущих дат.
= 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()
// Предположим, что текущая дата 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() .
Источник
date — Форматирует вывод системной даты/времени
(PHP 4, PHP 5, PHP 7)
date — Форматирует вывод системной даты/времени
Описание
Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .
Список параметров
Шаблон результирующей строки ( 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
Время в формате Интернет-времени (альтернативной системы отсчета времени суток)
от 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). Учтите, что date() всегда будет возвращать 000000, т.к. она принимает целочисленный ( integer ) параметр, тогда как DateTime::format() поддерживает микросекунды.
Например: 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 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 ));
/* пример использования константы в качестве форматирующего параметра */ // выведет примерно следующее: Wed, 25 Sep 2013 15:28:57 -0700 echo date ( DATE_RFC2822 );
Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.
Пример #2 Экранирование символов в функции date()
Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .
Пример #3 Пример совместного использования функций date() и mktime()
Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.
Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.
Пример #4 Форматирование с использованием date()
// Предположим, что текущей датой является 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 $today = date ( «Y-m-d H:i:s» ); // 2001-03-10 17:16:18 (формат MySQL DATETIME) ?>
Для форматирования дат на других языках используйте вместо date() функции setlocale() и strftime() .
Примечания
Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).
Начиная с версии PHP 5.1, временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .
Смотрите также
gmdate() — Форматирует дату/время по Гринвичу
idate() — Преобразует локальное время/дату в целое число
getdate() — Возвращает информацию о дате/времени
getlastmod() — Определение времени последней модификации страницы
mktime() — Возвращает метку времени Unix для заданной даты
strftime() — Форматирует текущую дату/время с учетом текущих настроек локали
time() — Возвращает текущую метку времени Unix
strtotime() — Преобразует текстовое представление даты на английском языке в метку времени Unix