Php date() function
Содержание:
- Can the robot recognize melodically similar tracks??
- Функция date
- PHP Predefined Date/Time Constants
- Добавление, вычитание и сравнение дат
- Parameter Values
- Parameter Values
- Деревянные
- Получить простую дату
- Описание time и mktime
- PHP 5 функции даты/времени
- Runtime Configuration
- Конфигурация среды выполнения
- Вместо предисловия
- Описание
Can the robot recognize melodically similar tracks??
Функция date
Эта функция возвратит пользователю строку в форме даты/времени, сделав это в определённом формате. Формат этот определяет сам пользователь.
Синтаксис функции выглядит так:
date($format);
Видно, что формат указывается в качестве аргумента. Этим аргументом могут выступать самые разные символы, коих существует целая таблица:
Теперь давайте попробуем, как эта таблица работает на практике. Выведем текущий день недели:
<?php echo date("l");
У меня получился Wednesday, а вот что отобразится в консоли у вас, зависит от дня недели, в который вы напишете эту команду.
Теперь выведем дату в виде YYYY-ММ-DD:
<?php echo date('Y-m-d');
А потом и дату, и время:
<?php echo date('l jS \of F Y h:i:s A');
PHP Predefined Date/Time Constants
Constant | Description |
---|---|
DATE_ATOM | Atom (example: 2019-01-18T14:13:03+00:00) |
DATE_COOKIE | HTTP Cookies (example: Fri, 18 Jan 2019 14:13:03 UTC) |
DATE_ISO8601 | ISO-8601 (example: 2019-01-18T14:13:03+0000) |
DATE_RFC822 | RFC 822 (example: Fri, 18 Jan 2019 14:13:03 +0000) |
DATE_RFC850 | RFC 850 (example: Friday, 18-Jan-19 14:13:03 UTC) |
DATE_RFC1036 | RFC 1036 (example: Friday, 18-Jan-19 14:13:03 +0000) |
DATE_RFC1123 | RFC 1123 (example: Fri, 18 Jan 2019 14:13:03 +0000) |
DATE_RFC2822 | RFC 2822 (example: Fri, 18 Jan 2019 14:13:03 +0000) |
DATE_RFC3339 | Same as DATE_ATOM (since PHP 5.1.3) |
DATE_RFC3339_EXTENDED | RFC3339 Extended format (since PHP 7.0.0) (example: 2019-01-18T16:34:01.000+00:00) |
DATE_RSS | RSS (Fri, 18 Jan 2019 14:13:03 +0000) |
DATE_W3C | World Wide Web Consortium (example: 2019-01-18T14:13:03+00:00) |
SUNFUNCS_RET_TIMESTAMP | Timestamp (since PHP 5.1.2) |
SUNFUNCS_RET_STRING | Hours:minutes (example: 09:41) (since PHP 5.1.2) |
SUNFUNCS_RET_DOUBLE | Hours as a floating point number (example: 9.75) (since PHP 5.1.2) |
❮ Previous
Next ❯
Добавление, вычитание и сравнение дат
Можно добавлять и вычитать определенные периоды времени к и от даты. Это можно сделать с помощью функций и . Вы также можете использовать функцию , чтобы вычесть две даты и вывести разницу между ними по годам, месяцам и дням или что-то еще.
Как правило, проще провести такую арифметику, связанную с датой и временем, в объектно-ориентированном стиле с классом , а не делать это процедурно. Мы попробуем оба эти стили, и вы сможете выбрать то, что вам больше нравится.
При использовании объект , на который вызывается метод , вычитается из объекта , который передается методу . Когда вы пишете код процедурного стиля, первый параметр даты вычитается из второго параметра даты.
И функция, и метод возвращают объект , представляющий разницу между двумя датами. Этот интервал можно отформатировать, чтобы дать конкретный результат, используя все символы, перечисленные в документации метода .
Различие между объектно-ориентированным стилем и процедурным становится более очевидным при вычитании или добавлении временного интервала.
Вы можете создать экземпляр нового объекта с помощью конструктора . Аналогично, вы можете создать экземпляр объекта с помощью конструктора . Он принимает строку в качестве ее параметра. Интервальная строка начинается с , что означает период. После этого вы можете указать каждый период с использованием целочисленного значения и символа, присвоенного определенному периоду. Для получения дополнительной информации вы должны проверить документацию .
Вот пример, который иллюстрирует, как легко добавлять или вычитать даты и время в PHP.
Вы также можете сравнить даты на PHP с помощью операторов сравнения. Это может пригодиться время от времени. Давайте создадим счетчик рождественских дней, используя операторы сравнения и другие методы .
Мы начали с создания двух объектов для хранения текущего времени и даты Рождества этого года. После этого мы запускаем цикл , чтобы добавить 1 год к рождественской дате 2018 года, пока настоящая дата не станет меньше, чем дата Рождества. Это будет полезно, когда код будет запущен 18 января 2024 года. Цикл while увеличит дату Рождества, если он меньше текущей даты во время запуска этого скрипта.
Наш рождественский счетчик теперь будет работать в течение многих десятилетий без проблем.
Parameter Values
Parameter | Description |
---|---|
object | Required. Specifies a DateTime object returned by date_create() |
format | Required. Specifies the format for the date. The following characters can be used:
and the following predefined constants can also be used (available since PHP 5.1.0):
|
Parameter Values
Parameter | Description |
---|---|
format | Required. Specifies the format of the outputted date string. The following characters can be used:
and the following predefined constants can also be used (available since PHP 5.1.0):
|
timestamp | Optional. Specifies an integer Unix timestamp. Default is the current local time (time()) |
Деревянные
Модели идеально вписываются в дачный антураж. Все похвалы дереву как материалу относятся и к ним: экологичные, «теплые», гипоаллергенные, износостойкие, вкусно пахнут лесом.
Минусы вытекают из достоинств: горки из дерева рассыхаются, трескаются. Они боятся влаги. А если плохо обработаны, могут занозить пальчик.
Получить простую дату
Обязательный параметр Format функции Date () указывает, как форматировать дату (или время).
Вот некоторые символы, которые обычно используются для дат:
- d — Представляет день месяца (от 01 до 31)
- m — Представляет месяц (от 01 до 12)
- Y — Представляет год (в четырех цифрах)
- l (строчная буква ‘ L ‘)-представляет день недели
Другие символы, такие как «/», «.» или «-«, также могут быть вставлены между символами для добавления дополнительного форматирования.
Приведенный ниже пример форматирует сегодняшнюю дату тремя различными способами:
Пример
<?phpecho «Today is » . date(«Y/m/d») . «<br>»;echo «Today is » . date(«Y.m.d») . «<br>»;echo «Today is » . date(«Y-m-d») . «<br>»;
echo «Today is » . date(«l»);?>
Описание time и mktime
Уже упоминалось, что time возвратит количество секунд с начала т. н. эпохи Unix и вплоть до текущего времени. Однако на практике эта функция чаще используется не в «чистом виде», а вместе с иными функциями.
Для начала займёмся её использованием вместе с меткой текущей даты:
<?php $now = time(); // метка echo $now; $nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24 ч.; 60 мин.; 60 сек. echo $nextWeek; // будет выведено что-то вроде 16026782231603283023
А теперь используем её же, но уже совместно с date(). Давайте выведем текущую дату двумя способами, а потом выведем дату, которая наступит через неделю:
<?php $now = time(); $nextWeek = time() + (7 * 24 * 60 * 60); // Первый способ вывода даты echo 'Сегодня: '. date('Y-m-d') ."\n"; // Второй способ вывода echo 'Сегодня: '. date('Y-m-d', $now) ."\n"; // Дата через неделю echo 'Через неделю будет: '. date('Y-m-d', $nextWeek) ."\n";
Теперь стоит поговорить о том, каким образом с функцией time используется mktime. Именно mktime возвращает метки времени Unix для даты, которую укажет пользователь.
Аргументы могут быть разные, а также опущены справа налево:
Лучше всего рассмотреть вышеописанное на примере. Давайте выведем в терминал:
— текущую полную дату и время (часы, минуты, секунды);
— время и дату завтрашнего дня;
— время и дату следующего месяца того же дня;
— ту же дату, но уже прошедшего года.
<?php // выводим текущую дату и время echo date("r"); // создание метки для завтрашнего дня $tomorrow = mktime(,,,date("m"),date("d")+1, date("Y")); echo date("r", $tomorrow); // создание метки для следующего месяца $nextmonth = mktime(,,,date("m")+1,date("d"), date("Y")); echo date("r", $nextmonth ); // метка для прошлого года $lastyear= mktime(,,,date("m")+1,date("d"), date("Y")-1); echo date("r", $lastyear);
На этом всё
Если интересуют более сложные и продвинутые знания по PHP, обратите внимание на соответствующий курс в OTUS!
По материалам статей:
— https://labs-org.ru/php-6/;
— https://space-base.ru/library/php/rabota-s-datoj-i-vremenem-v-php.
PHP 5 функции даты/времени
Функции | Описание |
---|---|
checkdate() | Проверяет дату григорианского |
date_add() | Добавление дней, месяцев, лет, часов, минут и секунд к дате |
date_create_from_format() | Возвращает новый объект DateTime, отформатированный в соответствии с заданным форматом |
date_create() | Возвращает новый объект DateTime |
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() | Устанавливает DateInterval из относительных частей строки |
date_interval_format() | Форматирует интервал |
date_isodate_set() | Задает дату ISO |
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() | Возвращает метку времени Unix |
date_timestamp_set() | Устанавливает дату и время на основе отметки времени Unix |
date_timezone_get() | Возвращает часовой пояс заданного объекта DateTime |
date_timezone_set() | Задает часовой пояс для объекта DateTime |
date() | Форматирует локальную дату и время |
getdate() | Возвращает сведения о дате и времени отметки времени или текущей локальной даты/времени |
gettimeofday() | Возвращает текущее время |
gmdate() | Форматирует дату и время GMT/UTC |
gmmktime() | Возвращает метку времени Unix для даты GMT |
gmstrftime() | Форматирует дату и время GMT/UTC в соответствии с параметрами локали |
idate() | Форматирует локальное время/дату как целое число |
localtime() | Возвращает местное время |
microtime() | Возвращает текущую метку времени Unix с микросекундами |
mktime() | Возвращает метку времени Unix для даты |
strftime() | Форматирует локальное время и/или дату в соответствии с параметрами локали |
strptime() | Анализирует время/дату, сгенерированную с strftime () |
strtotime() | Анализирует английский текстовый DateTime в метку времени Unix |
time() | Возвращает текущее время в виде отметки времени Unix |
timezone_abbreviations_list() | Возвращает ассоциативный массив, содержащий DST, смещение и имя часового пояса |
timezone_identifiers_list() | Возвращает индексированный массив со всеми идентификаторами часовых поясов |
timezone_location_get() | Возвращает сведения о местоположении для заданного часового пояса |
timezone_name_from_ abbr() | Возвращает имя часового пояса из аббревиатуры |
timezone_name_get() | Возвращает имя часового пояса |
timezone_offset_get() | Возвращает смещение часового пояса от GMT |
timezone_open() | Создает новый объект объект класса DateTimeZone |
timezone_transitions_get() | Возвращает все переходы для часового пояса |
timezone_version_get() | Возвращает версию базы данных часового пояса |
Runtime Configuration
The behavior of these functions is affected by settings in php.ini:
Name | Description | Default | PHP Version |
---|---|---|---|
date.timezone | The default timezone (used by all date/time functions) | «» | PHP 5.1 |
date.default_latitude | The default latitude (used by date_sunrise() and date_sunset()) | «31.7667» | PHP 5.0 |
date.default_longitude | The default longitude (used by date_sunrise() and date_sunset()) | «35.2333» | PHP 5.0 |
date.sunrise_zenith | The default sunrise zenith (used by date_sunrise() and date_sunset()) | «90.83» | PHP 5.0 |
date.sunset_zenith | The default sunset zenith (used by date_sunrise() and date_sunset()) | «90.83» | PHP 5.0 |
Конфигурация среды выполнения
Поведение этих функций зависит от настроек в PHP. ini:
Имя | Описание | По умолчанию | Версия PHP |
---|---|---|---|
date.timezone | Часовой пояс по умолчанию (используется всеми функциями даты и времени) | «» | PHP 5.1 |
date.default_latitude | Широта по умолчанию (используется date_sunrise() и date_sunset()) | «31.7667» | PHP 5.0 |
date.default_longitude | Долгота по умолчанию (используется date_sunrise() и date_sunset()) | «35.2333» | PHP 5.0 |
date.sunrise_zenith | По умолчанию Sunrise Zenith (используется date_sunrise() и date_sunset()) | «90.83» | PHP 5.0 |
date.sunset_zenith | По умолчанию закат Зенит (используется date_sunrise() и date_sunset()) | «90.83» | PHP 5.0 |
Вместо предисловия
Среди задач, с которыми регулярно сталкивается программист, очень часто встречаются разнообразные манипуляции с датами (dates) и временем (time). Никто не будет спорить с тем, что эти значения (символы, параметры) чрезвычайно важны. И база данных, и любая цифровая автоматизированная система не способны корректно работать, если нет точного времени, а также если информация о времени выполнения того либо иного процесса не сохраняется. Вот лишь некоторые примеры использования временных параметров:
— элементарное добавление даты в запись БД;
— отображение времени;
— вывод дат в различном формате;
— проверка текущего времени на соответствие заданному таймеру;
— определение срока между 2-мя датами и так далее.
Чтобы работать со временем было удобно, у каждого языка программирования имеются специальные типы данных, позволяющие хранить соответствующие значения. Обычно речь идёт о числовом значении, как целом, так и с плавающей точкой.
В языке программирования PHP работу со временем символизирует UNIX TIMESTAMP. То есть время тут хранится в виде целого числа, а его исчисление начинается с полуночи 1.01.1970 — с так называемой нулевой даты, принятой в Unix и прочих POSIX-совместимых ОС (ещё эту дату называют «Unix-время»). В результате возвращается число секунд, которое прошло с начала Эпохи Unix.
Прежде чем приступить к дальнейшему изложению материала, следует определить текущее значение времени в формате UNIX TIMESTAMP. Делается это с помощью простейшего кода и функции time:
<?php echo time();
На момент написания материала было 14 октября 2020 года, поэтому в терминале отобразилось следующее:
1602666005
Вы можете проверить вышеописанную команду и получить в PHP текущую дату и время самостоятельно, даже если не являетесь PHP-разработчиком — просто поместите код в любой онлайн-компилятор, вот один из многих. Так же рекомендуется делать и с остальным кодом — это поможет вам лучше понять работу описываемых в статье команд.
Но вернёмся к основной теме разговора. Благодаря коротенькому коду выше, мы получили от сервера текущее время — 1602666005 (у вас значение будет другим, ведь время не стоит на месте))).
Можно согласиться с тем, что для человека такой формат не очень удобен. Но на деле, чем проще представление данных, тем быстрее осуществляется обработка этих данных компьютерным устройством. Да и хранить такие значение в БД в плане ресурсов экономнее, чем при использовании специальных форматов. В итоге PHP работает со значениями времени одинаково на разных платформах (и Unix, и Windows), в результате чего обеспечивается универсальность использования кода.
Если же говорить об удобстве пользователя, то у разработчиков есть масса средств это удобство обеспечить.
Описание
date
Возвращает время, отформатированное в соответствии с аргументом
format, используя метку времени, заданную
аргументом timestamp или текущее системное
время, если timestamp не задан.
Другими словами, timestamp является
необязательным и по умолчанию равен значению, возвращаемому функцией
time().
Таблица 1. В параметре format распознаются
следующие символы
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
a | Ante meridiem или Post meridiem в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
B | Время в стадарте Swatch Internet | От 000 до 999 |
c | Дата в формате ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00 |
d | День месяца, 2 цифры с ведущими нулями | от 01 до 31 |
D | Сокращенное наименование дня недели, 3 символа | от Mon до Sun |
F | Полное наименование месяца, например January или March | от January до December |
g | Часы в 12-часовом формате без ведущих нулей | От 1 до 12 |
G | Часы в 24-часовом формате без ведущих нулей | От до 23 |
h | Часы в 12-часовом формате с ведущими нулями | От 01 до 12 |
H | Часы в 24-часовом формате с ведущими нулями | От 00 до 23 |
i | Минуты с ведущими нулями | 00 to 59 |
I (заглавная i) | Признак летнего времени | 1, если дата соответствует летнему времени, иначе otherwise. |
j | День месяца без ведущих нулей | От 1 до 31 |
l (строчная ‘L’) | Полное наименование дня недели | От Sunday до Saturday |
L | Признак високосного года | 1, если год високосный, иначе . |
m | Порядковый номер месяца с ведущими нулями | От 01 до 12 |
M | Сокращенное наименование месяца, 3 символа | От Jan до Dec |
n | Порядковый номер месяца без ведущих нулей | От 1 до 12 |
O | Разница с временем по Гринвичу в часах | Например: +0200 |
r | Дата в формате RFC 2822 | Например: Thu, 21 Dec 2000 16:01:07 +0200 |
s | Секунды с ведущими нулями | От 00 до 59 |
S | Английский суффикс порядкового числительного дня месяца, 2 символа |
st, nd, rd или th. Применяется совместно с j |
t | Количество дней в месяце | От 28 до 31 |
T | Временная зона на сервере | Примеры: EST, MDT … |
U |
Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) |
См. также time() |
w | Порядковый номер дня недели | От (воскресенье) до 6 (суббота) |
W | Порядковый номер недели года по ISO-8601, первый день недели — понедельник (добавлено в PHP 4.1.0) | Например: 42 (42-я неделя года) |
Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2003 |
y | Номер года, 2 цифры | Примеры: 99, 03 |
z | Порядковый номер дня в году (нумерация с 0) | От до 365 |
Z |
Смещение временной зоны в секундах. Для временных зон западнее UTC это отрицательное число, восточнее UTC — положительное. |
От -43200 до 43200 |
Любые другие символы, встреченные в строке format,
будут выведены в результирующую строку без изменений.
Z всегда возвращает при
использовании gmdate().
Пример 1. Примеры использования функции date() |
Избежать распознавания символа как форматирующего можно, если экранировать
этот символ с помощью \ Если в сочетании с
\ символ являееся специальным (например,
\t), следует добавлять еще один
\.
Пример 2. Экранирование символов в функции date() |
Функции date() и
mktime() для вывода прошедших и будущих дат.
Пример 3. date() и mktime() example
|
Приведем еще несколько примеров использования функции
date(). Помните, что следует экранировать все
символы, которые вы хотите видеть в результате работы функции без
изменений. Это относится и к символам, которые в текущей версии PHP
не распознаются как специальные, так как этим символам может быть
назначено значение в следующих версиях.
Используйте одинарные кавычки для предотвращения преобразования
\n в перевод строки.
Пример 4. Форматирование с использованием date()
|
Для форматирования дат на других языках используйте функции
setlocale() и strftime().
См. также описание функций getlastmod(), gmdate(),
mktime(), strftime()
и time().