(PHP 4, PHP 5, PHP 7, PHP 8)
date — Форматирует метку времени эпохи Unix
Функция возвращает отформатированную по заданной строке формата строку с датой и (или) временем,
которую сгенерировала на основе параметра timestamp —
целочисленной метки Unix-времени,
которую передали в функцию или которую функция получила на основе текущего системного времени,
если метку времени не передали. Поэтому параметр timestamp
необязателен и по умолчанию равен значению, которое возвращает
функция time().
Метки времени Unix не обрабатывают часовые пояса. Для форматирования информации о дате и времени с прикреплённым часовым поясом пользуются методом класса DateTimeImmutable — DateTimeInterface::format().
formatФормат, который принимается методом DateTimeInterface::format().
Замечание: Функция date() генерирует для поля микросекунд значение
000000, поскольку принимает метку времени как целочисленное (int) значение в секундах, тогда как метод DateTimeInterface::format() поддерживает микросекунды, если объект DateTimeInterface создали с микросекундами.
timestamp
Необязательный параметр timestamp —
целочисленная (int) метка времени, которая по умолчанию равна текущему местному времени, если параметр timestamp
не указали или равен null. Говоря по другому, значение по умолчанию равно результату функции time().
Функция возвращает отформатированную строку с датой.
Каждый вызов функции для работы с датой и временем генерирует ошибку уровня E_WARNING
при неправильных настройках часового пояса. Смотрите также описание функции
date_default_timezone_set().
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметр timestamp теперь принимает значение null.
|
Пример #1 Примеры использования функции date()
<?php
// Установка часового пояса по умолчанию
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));
/* Пример константы в параметре format */
// Выведет что-то наподобие: 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()
<?php
// Выведет что-то наподобие: Wednesday the 15th
echo date('l \t\h\e jS');
?>Функции date() и mktime() вызывают вместе, чтобы найти даты в будущем или прошлом.
Пример #3 Пример работы функции date() с функцией mktime()
<?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
);
?>Замечание:
Этот способ надёжнее, чем простое добавление или вычитание из метки времени количества секунд в дне или месяце из-за перехода на летнее время.
Приведём ещё ряд примеров форматирования даты функцией 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
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>Даты на других языках вместо функции date() форматируют методом IntlDateFormatter::format().
Замечание:
Метку времени из строкового представления даты генерируют функцией strtotime(). Кроме того, в отдельных базах данных есть функции для преобразования внутреннего представления даты в метки времени (например, функция » UNIX_TIMESTAMP БД MySQL).
Метка времени начала запроса доступна в переменной $_SERVER['REQUEST_TIME'].