Php занятие 6. функции даты и времени

Добавление, вычитание и сравнение дат

Можно добавлять и вычитать определенные периоды времени к и от даты. Это можно сделать с помощью функций и . Вы также можете использовать функцию , чтобы вычесть две даты и вывести разницу между ними по годам, месяцам и дням или что-то еще.

Как правило, проще провести такую арифметику, связанную с датой и временем, в объектно-ориентированном стиле с классом , а не делать это процедурно. Мы попробуем оба эти стили, и вы сможете выбрать то, что вам больше нравится.

При использовании объект , на который вызывается метод , вычитается из объекта , который передается методу . Когда вы пишете код процедурного стиля, первый параметр даты вычитается из второго параметра даты.

И функция, и метод возвращают объект , представляющий разницу между двумя датами. Этот интервал можно отформатировать, чтобы дать конкретный результат, используя все символы, перечисленные в документации метода .

Различие между объектно-ориентированным стилем и процедурным становится более очевидным при вычитании или добавлении временного интервала.

Вы можете создать экземпляр нового объекта с помощью конструктора . Аналогично, вы можете создать экземпляр объекта с помощью конструктора . Он принимает строку в качестве ее параметра. Интервальная строка начинается с , что означает период. После этого вы можете указать каждый период с использованием целочисленного значения и символа, присвоенного определенному периоду. Для получения дополнительной информации вы должны проверить документацию .

Вот пример, который иллюстрирует, как легко добавлять или вычитать даты и время в PHP.

Вы также можете сравнить даты на PHP с помощью операторов сравнения. Это может пригодиться время от времени. Давайте создадим счетчик рождественских дней, используя операторы сравнения и другие методы .

Мы начали с создания двух объектов для хранения текущего времени и даты Рождества этого года. После этого мы запускаем цикл , чтобы добавить 1 год к рождественской дате 2018 года, пока настоящая дата не станет меньше, чем дата Рождества. Это будет полезно, когда код будет запущен 18 января 2024 года. Цикл while увеличит дату Рождества, если он меньше текущей даты во время запуска этого скрипта.

Наш рождественский счетчик теперь будет работать в течение многих десятилетий без проблем.

Parameter Values

Parameter Description
format Required. Specifies the format of the outputted date string. The following characters can be used:

  • d — The day of the month (from 01 to 31)
  • D — A textual representation of a day (three letters)
  • j — The day of the month without leading zeros (1 to 31)
  • l (lowercase ‘L’) — A full textual representation of a day
  • N — The ISO-8601 numeric representation of a day (1 for Monday, 7 for Sunday)
  • S — The English ordinal suffix for the day of the month (2 characters st, nd, rd or th. Works well with j)
  • w — A numeric representation of the day (0 for Sunday, 6 for Saturday)
  • z — The day of the year (from 0 through 365)
  • W — The ISO-8601 week number of year (weeks starting on Monday)
  • F — A full textual representation of a month (January through December)
  • m — A numeric representation of a month (from 01 to 12)
  • M — A short textual representation of a month (three letters)
  • n — A numeric representation of a month, without leading zeros (1 to 12)
  • t — The number of days in the given month
  • L — Whether it’s a leap year (1 if it is a leap year, 0 otherwise)
  • o — The ISO-8601 year number
  • Y — A four digit representation of a year
  • y — A two digit representation of a year
  • a — Lowercase am or pm
  • A — Uppercase AM or PM
  • B — Swatch Internet time (000 to 999)
  • g — 12-hour format of an hour (1 to 12)
  • G — 24-hour format of an hour (0 to 23)
  • h — 12-hour format of an hour (01 to 12)
  • H — 24-hour format of an hour (00 to 23)
  • i — Minutes with leading zeros (00 to 59)
  • s — Seconds, with leading zeros (00 to 59)
  • u — Microseconds (added in PHP 5.2.2)
  • e — The timezone identifier (Examples: UTC, GMT, Atlantic/Azores)
  • I (capital i) — Whether the date is in daylights savings time (1 if Daylight Savings Time, 0 otherwise)
  • O — Difference to Greenwich time (GMT) in hours (Example: +0100)
  • P — Difference to Greenwich time (GMT) in hours:minutes (added in PHP 5.1.3)
  • T — Timezone abbreviations (Examples: EST, MDT)
  • Z — Timezone offset in seconds. The offset for timezones west of UTC is negative (-43200 to 50400)
  • c — The ISO-8601 date (e.g. 2013-05-05T16:34:42+00:00)
  • r — The RFC 2822 formatted date (e.g. Fri, 12 Apr 2013 12:01:05 +0200)
  • U — The seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

and the following predefined constants can also be used (available since PHP 5.1.0):

  • DATE_ATOM — Atom (example: 2013-04-12T15:52:01+00:00)
  • DATE_COOKIE — HTTP Cookies (example: Friday, 12-Apr-13 15:52:01 UTC)
  • DATE_ISO8601 — ISO-8601 (example: 2013-04-12T15:52:01+0000)
  • DATE_RFC822 — RFC 822 (example: Fri, 12 Apr 13 15:52:01 +0000)
  • DATE_RFC850 — RFC 850 (example: Friday, 12-Apr-13 15:52:01 UTC)
  • DATE_RFC1036 — RFC 1036 (example: Fri, 12 Apr 13 15:52:01 +0000)
  • DATE_RFC1123 — RFC 1123 (example: Fri, 12 Apr 2013 15:52:01 +0000)
  • DATE_RFC2822 — RFC 2822 (Fri, 12 Apr 2013 15:52:01 +0000)
  • DATE_RFC3339 — Same as DATE_ATOM (since PHP 5.1.3)
  • DATE_RSS — RSS (Fri, 12 Aug 2013 15:52:01 +0000)
  • DATE_W3C — World Wide Web Consortium (example: 2013-04-12T15:52:01+00:00)
timestamp Optional. Specifies an integer Unix timestamp. Default is the current local time (time())

PHP Date/Time Functions

Function Description
checkdate() Validates a Gregorian date
date_add() Adds days, months, years, hours, minutes, and seconds to a date
date_create_from_format() Returns a new DateTime object formatted according to a specified format
date_create() Returns a new DateTime object
date_date_set() Sets a new date
date_default_timezone_get() Returns the default timezone used by all date/time functions
date_default_timezone_set() Sets the default timezone used by all date/time functions
date_diff() Returns the difference between two dates
date_format() Returns a date formatted according to a specified format
date_get_last_errors() Returns the warnings/errors found in a date string
date_interval_create_from_date_string() Sets up a DateInterval from the relative parts of the string
date_interval_format() Formats the interval
date_isodate_set() Sets the ISO date
date_modify() Modifies the timestamp
date_offset_get() Returns the timezone offset
date_parse_from_format() Returns an associative array with detailed info about a specified date, according to a specified format
date_parse() Returns an associative array with detailed info about a specified date
date_sub() Subtracts days, months, years, hours, minutes, and seconds from a date
date_sun_info() Returns an array containing info about sunset/sunrise and twilight begin/end, for a specified day and location
date_sunrise() Returns the sunrise time for a specified day and location
date_sunset() Returns the sunset time for a specified day and location
date_time_set() Sets the time
date_timestamp_get() Returns the Unix timestamp
date_timestamp_set() Sets the date and time based on a Unix timestamp
date_timezone_get() Returns the time zone of the given DateTime object
date_timezone_set() Sets the time zone for the DateTime object
date() Formats a local date and time
getdate() Returns date/time information of a timestamp or the current local date/time
gettimeofday() Returns the current time
gmdate() Formats a GMT/UTC date and time
gmmktime() Returns the Unix timestamp for a GMT date
gmstrftime() Formats a GMT/UTC date and time according to locale settings
idate() Formats a local time/date as integer
localtime() Returns the local time
microtime() Returns the current Unix timestamp with microseconds
mktime() Returns the Unix timestamp for a date
strftime() Formats a local time and/or date according to locale settings
strptime() Parses a time/date generated with strftime()
strtotime() Parses an English textual datetime into a Unix timestamp
time() Returns the current time as a Unix timestamp
timezone_abbreviations_list() Returns an associative array containing dst, offset, and the timezone name
timezone_identifiers_list() Returns an indexed array with all timezone identifiers
timezone_location_get() Returns location information for a specified timezone
timezone_name_from_ abbr() Returns the timezone name from abbreviation
timezone_name_get() Returns the name of the timezone
timezone_offset_get() Returns the timezone offset from GMT
timezone_open() Creates new DateTimeZone object
timezone_transitions_get() Returns all transitions for the timezone
timezone_version_get() Returns the version of the timezonedb

Конфигурация среды выполнения

Поведение этих функций зависит от настроек в 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

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

Функция 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');

Описание 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 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 ❯

Описание

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().

PHP 5 предопределенные константы даты/времени

Постоянной Описание
DATE_ATOM Atom (example: 2005-08-15T16:13:03+0000)
DATE_COOKIE HTTP Cookies (example: Sun, 14 Aug 2005 16:13:03 UTC)
DATE_ISO8601 ISO-8601 (example: 2005-08-14T16:13:03+0000)
DATE_RFC822 RFC 822 (example: Sun, 14 Aug 2005 16:13:03 UTC)
DATE_RFC850 RFC 850 (example: Sunday, 14-Aug-05 16:13:03 UTC)
DATE_RFC1036 RFC 1036 (example: Sunday, 14-Aug-05 16:13:03 UTC)
DATE_RFC1123 RFC 1123 (example: Sun, 14 Aug 2005 16:13:03 UTC)
DATE_RFC2822 RFC 2822 (Sun, 14 Aug 2005 16:13:03 +0000)
DATE_RSS RSS (Sun, 14 Aug 2005 16:13:03 UTC)
DATE_W3C World Wide Web Consortium (example: 2005-08-14T16:13:03+0000)

❮ Назад
Дальше ❯

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:

  • d — The day of the month (from 01 to 31)
  • D — A textual representation of a day (three letters)
  • j — The day of the month without leading zeros (1 to 31)
  • l (lowercase ‘L’) — A full textual representation of a day
  • N — The ISO-8601 numeric representation of a day (1 for Monday, 7 for Sunday)
  • S — The English ordinal suffix for the day of the month (2 characters st, nd, rd or th. Works well with j)
  • w — A numeric representation of the day (0 for Sunday, 6 for Saturday)
  • z — The day of the year (from 0 through 365)
  • W — The ISO-8601 week number of year (weeks starting on Monday)
  • F — A full textual representation of a month (January through December)
  • m — A numeric representation of a month (from 01 to 12)
  • M — A short textual representation of a month (three letters)
  • n — A numeric representation of a month, without leading zeros (1 to 12)
  • t — The number of days in the given month
  • L — Whether it’s a leap year (1 if it is a leap year, 0 otherwise)
  • o — The ISO-8601 year number
  • Y — A four digit representation of a year
  • y — A two digit representation of a year
  • a — Lowercase am or pm
  • A — Uppercase AM or PM
  • B — Swatch Internet time (000 to 999)
  • g — 12-hour format of an hour (1 to 12)
  • G — 24-hour format of an hour (0 to 23)
  • h — 12-hour format of an hour (01 to 12)
  • H — 24-hour format of an hour (00 to 23)
  • i — Minutes with leading zeros (00 to 59)
  • s — Seconds, with leading zeros (00 to 59)
  • u — Microseconds (added in PHP 5.2.2)
  • e — The timezone identifier (Examples: UTC, GMT, Atlantic/Azores)
  • I (capital i) — Whether the date is in daylights savings time (1 if Daylight Savings Time, 0 otherwise)
  • O — Difference to Greenwich time (GMT) in hours (Example: +0100)
  • P — Difference to Greenwich time (GMT) in hours:minutes (added in PHP 5.1.3)
  • T — Timezone abbreviations (Examples: EST, MDT)
  • Z — Timezone offset in seconds. The offset for timezones west of UTC is negative (-43200 to 50400)
  • c — The ISO-8601 date (e.g. 2013-05-05T16:34:42+00:00)
  • r — The RFC 2822 formatted date (e.g. Fri, 12 Apr 2013 12:01:05 +0200)
  • U — The seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

and the following predefined constants can also be used (available since PHP 5.1.0):

  • DATE_ATOM — Atom (example: 2013-04-12T15:52:01+00:00)
  • DATE_COOKIE — HTTP Cookies (example: Friday, 12-Apr-13 15:52:01 UTC)
  • DATE_ISO8601 — ISO-8601 (example: 2013-04-12T15:52:01+0000)
  • DATE_RFC822 — RFC 822 (example: Fri, 12 Apr 13 15:52:01 +0000)
  • DATE_RFC850 — RFC 850 (example: Friday, 12-Apr-13 15:52:01 UTC)
  • DATE_RFC1036 — RFC 1036 (example: Fri, 12 Apr 13 15:52:01 +0000)
  • DATE_RFC1123 — RFC 1123 (example: Fri, 12 Apr 2013 15:52:01 +0000)
  • DATE_RFC2822 — RFC 2822 (Fri, 12 Apr 2013 15:52:01 +0000)
  • DATE_RFC3339 — Same as DATE_ATOM (since PHP 5.1.3)
  • DATE_RSS — RSS (Fri, 12 Aug 2013 15:52:01 +0000)
  • DATE_W3C — World Wide Web Consortium (example: 2013-04-12T15:52:01+00:00)

Получить простую дату

Обязательный параметр 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»);?>

Вместо предисловия

Среди задач, с которыми регулярно сталкивается программист, очень часто встречаются разнообразные манипуляции с датами (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), в результате чего обеспечивается универсальность использования кода.

Если же говорить об удобстве пользователя, то у разработчиков есть масса средств это удобство обеспечить.

Функция PHP mktime()

Иногда вам нужно получить метку времени в прошлом или будущем. Вы можете сделать это с помощью функции . Вам нужно указать нужную дату, и она возвращается с меткой времени Unix. Синтаксис данной функции следующий:

int mktime ( ]]]]] )

Здесь используются следующие данные:

  • – Количество часов, прошедших с начала дня, указанного параметрами month, day и year.
  • – Количество минут, прошедших от начала часа, указанного параметром hour.
  • – Количество секунд, прошедших от начала минуты, указанной параметром minute.
  • – Количество месяцев, прошедших с конца предыдущего года.
  • – Количество дней, прошедших с конца предыдущего месяца.
  • – Номер года, может быть указан двумя или четырьмя цифрами.

Вы можете использовать эту временную метку с вышеупомянутой функцией даты (), чтобы отобразить ее в нужном формате. Ниже представлены некоторые практические примеры использования этой функции:

<?php
echo "<p>Отображение даты, сгенерированной функцией mktime: " . date('d-m-Y', mktime(0, 0, 0, 5, 25, 2019)) . "</p>";
echo "<p>Отображение даты, сгенерированной функцией mktime с неверным указанием дня и месяца: " . date('d-m-Y', mktime(0, 0, 0, 14, 32, 2019)) . "</p>";
?>

Если вы хотите получить дату завтрашнего дня, вы можете использовать следующий код:

<?php
echo "<p>Сегодняшняя дата: " . date('d-m-Y') . "</p>";
echo "<p>Завтра будет: " . date('d-m-Y', mktime(0, 0, 0, date('m'), date('d')+1, date('Y') ) ) . "</p>";
?>

В данном примере мы использовали функцию и добавили 1 день к параметру дня, чтобы получить дату завтрашнего дня.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector