(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'].