date
Возвращает строку, отформатированную в соответствии с указанным в параметре format шаблоном. Используется метка времени, заданная параметром timestamp (метка времени Unix), или текущее системное время, если параметр timestamp не задан. Таким образом, параметр timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .
Метки времени Unix не обрабатывают часовые пояса. Используйте класс DateTimeImmutable и его метод форматирования DateTimeInterface::format() для форматирования информации о дате/времени с привязкой к часовому поясу.
Список параметров
Замечание: Функция date() всегда будет генерировать 000000 в качестве микросекунд, поскольку она принимает параметр int , тогда как DateTime::format() поддерживает микросекунды, если DateTime был создан с микросекундами.
Необязательный параметр timestamp представляет собой метку времени типа int , по умолчанию равную текущему локальному времени, если timestamp не указан или null . Другими словами, значение по умолчанию равно результату функции time() .
Возвращаемые значения
Возвращает отформатированную строку с датой.
Ошибки
Каждый вызов к функциям даты/времени при неправильных настройках часового пояса сгенерирует ошибку уровня E_WARNING , если часовой пояс некорректный. Смотрите также date_default_timezone_set()
Список изменений
Версия | Описание |
---|---|
8.0.0 | timestamp теперь допускает значение null. |
Примеры
Пример #1 Примеры использования функции date()
// установка часового пояса по умолчанию.
date_default_timezone_set ( ‘UTC’ );
?php
// выведет примерно следующее: 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()
Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .
Пример #3 Пример совместного использования функций date() и mktime()
$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 );
?>?php
Замечание:
Данный способ более надёжен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.
Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.
Пример #4 Форматирование с использованием date()
// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся в часовом поясе Mountain Standard Time (MST)
?php
$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() можно использовать метод IntlDateFormatter::format() .
Примечания
Замечание:
Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).
Временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .
Смотрите также
- DateTimeImmutable::__construct() — Возвращает новый объект DateTimeImmutable
- DateTimeInterface::format() — Возвращает дату, отформатированную согласно переданному формату
- gmdate() — Форматирует дату/время по Гринвичу
- idate() — Преобразует локальное время/дату в целое число
- getdate() — Возвращает информацию о дате/времени
- getlastmod() — Получает время последней модификации страницы
- mktime() — Возвращает метку времени Unix для заданной даты
- IntlDateFormatter::format() — Форматирует значение даты/времени в виде строки
- time() — Возвращает текущую метку системного времени Unix
- Предопределённые константы даты и времени
User Contributed Notes
- Функции даты и времени
- checkdate
- date_add
- date_create_from_format
- date_create_immutable_from_format
- date_create_immutable
- date_create
- date_date_set
- date_default_timezone_get
- date_default_timezone_set
- date_diff
- date_format
- date_get_last_errors
- date_interval_create_from_date_string
- date_interval_format
- date_isodate_set
- date_modify
- date_offset_get
- date_parse_from_format
- date_parse
- date_sub
- date_sun_info
- date_sunrise
- date_sunset
- date_time_set
- date_timestamp_get
- date_timestamp_set
- date_timezone_get
- date_timezone_set
- date
- getdate
- gettimeofday
- gmdate
- gmmktime
- gmstrftime
- idate
- localtime
- microtime
- mktime
- strftime
- strptime
- strtotime
- time
- timezone_abbreviations_list
- timezone_identifiers_list
- timezone_location_get
- timezone_name_from_abbr
- timezone_name_get
- timezone_offset_get
- timezone_open
- timezone_transitions_get
- timezone_version_get
Php date format время
This page describes the different date formats in a BNF-like syntax, that the DateTimeImmutable , DateTime , date_create() , date_create_immutable() , and strtotime() parser understands.
To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.
Used Symbols
Description Format Examples daysuf «st» | «nd» | «rd» | «th» dd (2?7 | «3»[01]) daysuf ? «7th», «22nd», «31» DD «0» 9 | 29 | «3» [01] «07», «31» m ‘january’ | ‘february’ | ‘march’ | ‘april’ | ‘may’ | ‘june’ | ‘july’ | ‘august’ | ‘september’ | ‘october’ | ‘november’ | ‘december’ | ‘jan’ | ‘feb’ | ‘mar’ | ‘apr’ | ‘may’ | ‘jun’ | ‘jul’ | ‘aug’ | ‘sep’ | ‘sept’ | ‘oct’ | ‘nov’ | ‘dec’ | «I» | «II» | «III» | «IV» | «V» | «VI» | «VII» | «VIII» | «IX» | «X» | «XI» | «XII» M ‘jan’ | ‘feb’ | ‘mar’ | ‘apr’ | ‘may’ | ‘jun’ | ‘jul’ | ‘aug’ | ‘sep’ | ‘sept’ | ‘oct’ | ‘nov’ | ‘dec’ mm «0»? 8 | «1»1 «0», «04», «7», «12» MM «0» 3 | «1»1 «00», «04», «07», «12» y 9 «00», «78», «08», «8», «2008» yy 7 «00», «08», «78» YY 5 «2000», «2008», «1978» YYY 7 «81412», «20192» Localized Notations
Description Format Examples American month and day mm «/» dd «5/12», «10/27» American month, day and year mm «/» dd «/» y «12/22/78», «1/17/2006», «1/17/6» Four digit year, month and day with slashes YY «/» mm «/» dd «2008/6/30», «1978/12/22» Four digit year and month (GNU) YY «-» mm «2008-6», «2008-06», «1978-12» Year, month and day with dashes y «-» mm «-» dd «2008-6-30», «78-12-22», «8-6-21» Day, month and four digit year, with dots, tabs or dashes dd [.\t-] mm [.-] YY «30-6-2008», «22.12.1978» Day, month and two digit year, with dots or tabs dd [.\t] mm «.» yy «30.6.08», «22\t12.78» Day, textual month and year dd ([ \t.-])* m ([ \t.-])* y «30-June 2008», «22DEC78», «14 III 1879» Textual month and four digit year (Day reset to 1) m ([ \t.-])* YY «June 2008», «DEC1978», «March 1879» Four digit year and textual month (Day reset to 1) YY ([ \t.-])* m «2008 June», «1978-XII», «1879.MArCH» Textual month, day and year m ([ .\t-])* dd [,.stndrh\t ]+ y «July 1st, 2008», «April 17, 1790», «May.9,78» Textual month and day m ([ .\t-])* dd [,.stndrh\t ]* «July 1st,», «Apr 17», «May.9» Day and textual month dd ([ .\t-])* m «1 July», «17 Apr», «9.May» Month abbreviation, day and year M «-» DD «-» y «May-09-78», «Apr-17-1790» Year, month abbreviation and day y «-» M «-» DD «78-Dec-22», «1814-MAY-17» Year (and just the year) YY «1978», «2008» Year (expanded, 5-19 digits with sign) [+-] YYY «-81120», «+20192» Textual month (and just the month) m «March», «jun», «DEC» ISO8601 Notations
Description Format Examples Eight digit year, month and day YY MM DD «15810726», «19780417», «18140517» Four digit year, month and day with slashes YY «/» MM «/» DD «2008/06/30», «1978/12/22» Two digit year, month and day with dashes yy «-» MM «-» DD «08-06-30», «78-12-22» Four digit year with optional sign, month and day [+-]? YY «-» MM «-» DD «-0002-07-26», «+1978-04-17», «1814-05-17» Five+ digit year with required sign, month and day [+-] YYY «-» MM «-» DD «-81120-02-26», «+20192-04-17» Note:
For the y and yy formats, years below 100 are handled in a special way when the y or yy symbol is used. If the year falls in the range 0 (inclusive) to 69 (inclusive), 2000 is added. If the year falls in the range 70 (inclusive) to 99 (inclusive) then 1900 is added. This means that «00-01-01» is interpreted as «2000-01-01».
Note:
The «Day, month and two digit year, with dots or tabs» format ( dd [.\t] mm «.» yy ) only works for the year values 61 (inclusive) to 99 (inclusive) — outside those years the time format » HH [.:] MM [.:] SS » has precedence.
Note:
The «Year (and just the year)» format only works if a time string has already been found — otherwise this format is recognised as HH MM .
It is possible to over- and underflow the dd and DD format. Day 0 means the last day of previous month, whereas overflows count into the next month. This makes «2008-08-00» equivalent to «2008-07-31» and «2008-06-31» equivalent to «2008-07-01» (June only has 30 days).
Note that the day range is restricted to 0-31 as indicated by the regular expression above. Thus «2008-06-32» is not a valid date string, for instance.
It is also possible to underflow the mm and MM formats with the value 0. A month value of 0 means December of the previous year. As example «2008-00-22» is equivalent to «2007-12-22».
If you combine the previous two facts and underflow both the day and the month, the following happens: «2008-00-00» first gets converted to «2007-12-00» which then gets converted to «2007-11-30». This also happens with the string «0000-00-00», which gets transformed into «-0001-11-30» (the year -1 in the ISO 8601 calendar, which is 2 BC in the proleptic Gregorian calendar).
User Contributed Notes