Описание 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() .
Php windows date function
В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.
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
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
mktime( ) — возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate(). Принимает до шести целочисленных аргументов в следующем порядке:
часы минуты секунды месяц день месяца год
Пример 3
Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать 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
Часовой пояс (имя или сокращение)
%%
Символ «%»
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.
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