time
Возвращает количество секунд, прошедших с начала эпохи Unix (1 января 1970 00:00:00 GMT) до текущего времени.
Замечание:
Метки времени Unix не содержат никакой информации относительно локального часового пояса. Рекомендуется использовать класс DateTimeImmutable для работы с информацией о дате и времени, чтобы избежать подводных камней, связанных с метками времени Unix.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает текущую метку системного времени.
Примеры
Пример #1 Пример использования time()
echo ‘Сейчас: ‘ . time ();
?>
Результатом выполнения данного примера будет что-то подобное:
Сейчас: 1660338149
Примечания
Подсказка
Время начала запроса доступно в глобальной переменной $_SERVER[‘REQUEST_TIME’] .
Смотрите также
- DateTimeImmutable
- date() — Форматирует временную метку Unix
- microtime() — Возвращает текущую метку времени Unix с микросекундами
User Contributed Notes
There are no user contributed notes for this page.
- Функции даты и времени
- 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
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
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()
// выведет примерно следующее: Wednesday the 15th
echo date ( ‘l \t\h\e jS’ );
?>?phpДля вывода прошедших и будущих дат удобно использовать функции 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
There are no user contributed notes for this page.
- Функции даты и времени
- 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
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Дата и время в PHP
Одна из самых востребованных функций, которая используется практически на каждом сайте — это функция даты date( . ). Функция дата нужна и на больших новостных сайтах, и на маленьких личных блогах. Но вывод даты в одном формате — это далеко не единственное предназначение этой функции.
Функция даты в PHP
Давайте попробуем поэкспериментировать с этой функцией и выведем даты в совершенно разных форматах. В том числе не текущие даты, а даты через несколько дней, часов или секунд.
Приступим с примера:
- d — номер дня в месяце. Если меньше 10, то с нулём: «09», «05»
- m — номер месяца. Если меньше 10, то с нулём: «09», «05»
- Y — год, 4 цифры.
- y — год, две цифры.
- n — номер месяца. Без первого нуля, если меньше 10
- j — номер дня в месяце. Без первого нуля, если меньше 10
- H — часы в 24-часовом формате. Если меньше 10, то с нулём: «09», «05»
- s — секунды. Если меньше 10, то с нулём: «09», «05»
- i — минуты. Если меньше 10, то с нулём: «09», «05»
- z — номер дня от начала года.
- w — день недели (0 — воскресенье, 1 — понедельник и т.д.).
- h — часы в 12-часовом формате
- L — 1, если високосный год, 0, если не високосный.
- W — порядковый номер недели года.
- U — количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
В результате выполнения такого кода мы узнаем дату и время в формате «ДД.ММ.ГГГГ ЧЧ:ММ:СС» через 3 дня. Или говоря в секундах, через 3600 * 24 * 3 секунд. Можно не только прибавлять, но и отнимать секунды, чтобы получить дату в прошлом. Такой способ вычисления даты является одним из самых простых, но для полноценного использования ещё нужная функция, которая переводит дату из любого формата в timestamp. Такая функция есть и называется strtotime( ). В качестве аргумента она принимает дату в любом формате. Но лучше использовать очевидные форматы типа «ДД.ММ.ГГГГ ЧЧ:ММ:СС». Тогда она правильно разберётся, что относится к году, а что ко дню. Попробуем её на практике:
Дата и время — Основы PHP
Вы когда-нибудь задумывались о том, как хранится в компьютере время? В этом уроке мы обсудим, как работают время и дата и где они хранятся.
Время
Как вы знаете, включение и выключение компьютера никак не влияет на часы. Можно сделать вывод, что часы в компьютере работают сами по себе.
Это действительно так. Основные часы компьютера — аппаратные. Они живут самостоятельной жизнью и имеют свою собственную батарею. При включении компьютер считывает данные этих часов, записывает к себе в память и начинает самостоятельно отсчитывать время. Эти часы называются системными. Любое изменение системных часов влияет и на аппаратные.
В Linux, Unix, MacOS и большинстве других операционных систем системное время представляется в формате Unix Time. Оно определяется как количество секунд, прошедших с этого момента:
00:00:00 UTC 1 января 1970 года (четверг)
Время с этого момента называют «эрой Unix» (Unix Epoch). Unix-время представлено целым числом, которое увеличивается с каждой прошедшей секундой без необходимости вычислений для определения года, месяца, дня, часа или минуты.
Конкретная дата в формате Unix Time называется timestamp — временной штамп. Например, для получения текущего timestamp в PHP используется функция time() :
time(); // 1532435204Дата
Одна из главных функций по работе с датами в PHP — date() . Она конвертирует timestamp в человекочитаемый формат.
Первым параметром в эту функцию передается описание формата даты, которое похоже на форматы для функции sprintf() :
// Y означает год date('Y'); // 2018По умолчанию date() использует текущее время. Но если нужно, ей можно передать конкретный timestamp:
date('M', 123123123); // NovРазличных опций форматирования в функции date() — десятки. Все они подробно перечислены на странице документации. Вряд ли стоит их все запоминать, но понимать общий принцип работы — полезно. Все опции могут комбинироваться между собой в любых вариациях:
date('l jS \of F Y h:i:s A'); // Thursday 26th of July 2018 10:58:55 AMФункия mktime()
Функция mktime() генерирует timestamp по информации о времени: секундах, часах, минутах и дате:
( int $hour, ?int $minute = null, ?int $second = null, ?int $month = null, ?int $day = null, ?int $year = null ): int|falsemktime() — многословная функция, в которой каждая часть даты и времени передается как отдельный параметр:
mktime(0, 0, 0, 7, 1, 2000); // 962409600Часовые пояса
Одна из самых сложных деталей при работе с датами — часовые пояса (time zones).
Вся Земля делится на 24 часовых пояса, так что в соседних поясах время чаще всего отличается на час. Нулевым временем считается всемирное координированное время (UTC). Часовые пояса вокруг земного шара выражаются, как положительное или отрицательное смещение от UTC. Например, в Москве часовой пояс +3.
Изюминку в этот механизм добавляет переход на летнее и зимнее время. Причем если пояса строго фиксированы, то переход на зимнее и летнее время — прерогатива конкретных государств, которые периодически его вводят или отменяют. Время UTC никогда не переводят, смещения происходят относительно него. Кроме этого есть еще тысяча и одна проблема.
Главное правило при работе с датами — хранение и сравнение должно производиться в UTC формате. А вот выводить даты лучше в той зоне, в которой живет пользователь.
Если вам нужно проверить текущую таймзону, можно воспользоваться функцией date_default_timezone_get() . Установить зону функцией date_default_timezone_set() .
Дополнительные материалы
- Примеры форматов дат
- Список поддерживаемых временных зон в PHP
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
