PHP 8.3.4 Released!

date

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

dateФорматирует временную метку Unix

Описание

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

Возвращает строку, отформатированную в соответствии с указанным в параметре format шаблоном. Используется метка времени, заданная параметром timestamp (метка времени Unix), или текущее системное время, если параметр timestamp не задан. Таким образом, параметр timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time().

Внимание

Метки времени Unix не обрабатывают часовые пояса. Используйте класс DateTimeImmutable и его метод форматирования DateTimeInterface::format() для форматирования информации о дате/времени с привязкой к часовому поясу.

Список параметров

format

Принятый формат DateTimeInterface::format().

Замечание: Функция date() всегда будет генерировать 000000 в качестве микросекунд, поскольку она принимает параметр int, тогда как DateTime::format() поддерживает микросекунды, если DateTime был создан с микросекундами.

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));

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: 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(). Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).

Подсказка

Временную метку начала запроса можно получить из поля $_SERVER['REQUEST_TIME'].

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

add a note

User Contributed Notes 1 note

up
0
griddstone at outlook dot com
5 days ago
There is a fine distinction between g, G, h, and H. All of them are for the hour of the day, but in four different formats.

g = 12-hour format, no leading zeros
G = 24-hour format, no leading zeros
h = 12-hour format, with leading zeros
H = 24-hour format, with leading zeros

<?php
date
("g:i", mktime(0,0,0,3,13,2024)) // -> 12:00
date("G:i", mktime(8,0,0,3,13,2024)) // -> 8:00
date("h:i", mktime(8,0,0,3,13,2024)) // -> 08:00
date("H:i", mktime(0,0,0,3,13,2024)) // -> 00:00
?>

Essentially, capital letter is 24-hour format, lower case is 12-hour format. 'h' has leading zeros, 'g' does not.
To Top