PHP Conference Nagoya 2025

date

(PHP 4, PHP 5, PHP 7, PHP 8)

dateФорматирует метку времени эпохи Unix

Описание

date(string $format, ?int $timestamp = null): string

Функция возвращает отформатированную по заданной строке формата строку с датой и (или) временем, которую сгенерировала на основе параметра timestamp — целочисленной метки Unix-времени, которую передали в функцию или которую функция получила на основе текущего системного времени, если метку времени не передали. Поэтому параметр timestamp необязателен и по умолчанию равен значению, которое возвращает функция time().

Внимание

Метки времени Unix не обрабатывают часовые пояса. Для форматирования информации о дате и времени с прикреплённым часовым поясом пользуются методом класса DateTimeImmutableDateTimeInterface::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'].

Смотрите также

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top