0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В этой статье будет рассмотрено, как работать с датой и временем в языке программирования PHP. Также читатель узнает о таких функциях для работы со временем, как date(), time() и mktime().</p>
1
<p>В этой статье будет рассмотрено, как работать с датой и временем в языке программирования PHP. Также читатель узнает о таких функциях для работы со временем, как date(), time() и mktime().</p>
2
<h2>Вместо предисловия</h2>
2
<h2>Вместо предисловия</h2>
3
<p>Среди задач, с которыми регулярно сталкивается программист, очень часто встречаются разнообразные манипуляции с датами (dates) и временем (time). Никто не будет спорить с тем, что эти значения (символы, параметры) чрезвычайно важны. И база данных, и любая цифровая автоматизированная система не способны корректно работать, если нет точного времени, а также если информация о времени выполнения того либо иного процесса не сохраняется. Вот лишь некоторые примеры использования временных параметров: - элементарное добавление даты в запись БД; - отображение времени; - вывод дат в различном формате; - проверка текущего времени на соответствие заданному таймеру; - определение срока между 2-мя датами и так далее.</p>
3
<p>Среди задач, с которыми регулярно сталкивается программист, очень часто встречаются разнообразные манипуляции с датами (dates) и временем (time). Никто не будет спорить с тем, что эти значения (символы, параметры) чрезвычайно важны. И база данных, и любая цифровая автоматизированная система не способны корректно работать, если нет точного времени, а также если информация о времени выполнения того либо иного процесса не сохраняется. Вот лишь некоторые примеры использования временных параметров: - элементарное добавление даты в запись БД; - отображение времени; - вывод дат в различном формате; - проверка текущего времени на соответствие заданному таймеру; - определение срока между 2-мя датами и так далее.</p>
4
<p>Чтобы работать со временем было удобно, у каждого языка программирования имеются специальные типы данных, позволяющие хранить соответствующие значения. Обычно речь идёт о числовом значении, как целом, так и с плавающей точкой.</p>
4
<p>Чтобы работать со временем было удобно, у каждого языка программирования имеются специальные типы данных, позволяющие хранить соответствующие значения. Обычно речь идёт о числовом значении, как целом, так и с плавающей точкой.</p>
5
<p>В языке программирования PHP работу со временем символизирует UNIX TIMESTAMP. То есть время тут хранится в виде целого числа, а его исчисление начинается с полуночи 1.01.1970 - с так называемой нулевой даты, принятой в Unix и прочих POSIX-совместимых ОС (ещё эту дату называют "Unix-время"). В результате возвращается число секунд, которое прошло с начала Эпохи Unix.</p>
5
<p>В языке программирования PHP работу со временем символизирует UNIX TIMESTAMP. То есть время тут хранится в виде целого числа, а его исчисление начинается с полуночи 1.01.1970 - с так называемой нулевой даты, принятой в Unix и прочих POSIX-совместимых ОС (ещё эту дату называют "Unix-время"). В результате возвращается число секунд, которое прошло с начала Эпохи Unix.</p>
6
<p>Прежде чем приступить к дальнейшему изложению материала, следует определить текущее значение времени в формате UNIX TIMESTAMP. Делается это с помощью простейшего кода и функции time:</p>
6
<p>Прежде чем приступить к дальнейшему изложению материала, следует определить текущее значение времени в формате UNIX TIMESTAMP. Делается это с помощью простейшего кода и функции time:</p>
7
<p>На момент написания материала было 14 октября 2020 года, поэтому в терминале отобразилось следующее:</p>
7
<p>На момент написания материала было 14 октября 2020 года, поэтому в терминале отобразилось следующее:</p>
8
<p>Вы можете проверить вышеописанную команду и получить в PHP текущую дату и время самостоятельно, даже если не являетесь PHP-разработчиком - просто поместите код в любой онлайн-компилятор,<a>вот один из многих</a>. Так же рекомендуется делать и с остальным кодом - это поможет вам лучше понять работу описываемых в статье команд.</p>
8
<p>Вы можете проверить вышеописанную команду и получить в PHP текущую дату и время самостоятельно, даже если не являетесь PHP-разработчиком - просто поместите код в любой онлайн-компилятор,<a>вот один из многих</a>. Так же рекомендуется делать и с остальным кодом - это поможет вам лучше понять работу описываемых в статье команд.</p>
9
<p>Но вернёмся к основной теме разговора. Благодаря коротенькому коду выше, мы получили от сервера текущее время - 1602666005 (у вас значение будет другим, ведь время не стоит на месте))).</p>
9
<p>Но вернёмся к основной теме разговора. Благодаря коротенькому коду выше, мы получили от сервера текущее время - 1602666005 (у вас значение будет другим, ведь время не стоит на месте))).</p>
10
<p>Можно согласиться с тем, что для человека такой формат не очень удобен. Но на деле, чем проще представление данных, тем быстрее осуществляется обработка этих данных компьютерным устройством. Да и хранить такие значение в БД в плане ресурсов экономнее, чем при использовании специальных форматов. В итоге PHP работает со значениями времени одинаково на разных платформах (и Unix, и Windows), в результате чего обеспечивается универсальность использования кода.</p>
10
<p>Можно согласиться с тем, что для человека такой формат не очень удобен. Но на деле, чем проще представление данных, тем быстрее осуществляется обработка этих данных компьютерным устройством. Да и хранить такие значение в БД в плане ресурсов экономнее, чем при использовании специальных форматов. В итоге PHP работает со значениями времени одинаково на разных платформах (и Unix, и Windows), в результате чего обеспечивается универсальность использования кода.</p>
11
<p>Если же говорить об удобстве пользователя, то у разработчиков есть масса средств это удобство обеспечить.</p>
11
<p>Если же говорить об удобстве пользователя, то у разработчиков есть масса средств это удобство обеспечить.</p>
12
<h2>Функция date</h2>
12
<h2>Функция date</h2>
13
<p>Эта функция возвратит пользователю строку в форме даты/времени, сделав это в определённом формате. Формат этот определяет сам пользователь.</p>
13
<p>Эта функция возвратит пользователю строку в форме даты/времени, сделав это в определённом формате. Формат этот определяет сам пользователь.</p>
14
<p>Синтаксис функции выглядит так:</p>
14
<p>Синтаксис функции выглядит так:</p>
15
<p>Видно, что формат указывается в качестве аргумента. Этим аргументом могут выступать самые разные символы, коих существует целая таблица:</p>
15
<p>Видно, что формат указывается в качестве аргумента. Этим аргументом могут выступать самые разные символы, коих существует целая таблица:</p>
16
<p>Теперь давайте попробуем, как эта таблица работает на практике. Выведем текущий день недели:</p>
16
<p>Теперь давайте попробуем, как эта таблица работает на практике. Выведем текущий день недели:</p>
17
<p>У меня получился Wednesday, а вот что отобразится в консоли у вас, зависит от дня недели, в который вы напишете эту команду.</p>
17
<p>У меня получился Wednesday, а вот что отобразится в консоли у вас, зависит от дня недели, в который вы напишете эту команду.</p>
18
<p>Теперь выведем дату в виде YYYY-ММ-DD:</p>
18
<p>Теперь выведем дату в виде YYYY-ММ-DD:</p>
19
<?php echo date('Y-m-d');<p>А потом и дату, и время:</p>
19
<?php echo date('Y-m-d');<p>А потом и дату, и время:</p>
20
<?php echo date('l jS \of F Y h:i:s A');<h2>Описание time и mktime</h2>
20
<?php echo date('l jS \of F Y h:i:s A');<h2>Описание time и mktime</h2>
21
<p>Уже упоминалось, что time возвратит количество секунд с начала т. н. эпохи Unix и вплоть до текущего времени. Однако на практике эта функция чаще используется не в "чистом виде", а вместе с иными функциями.</p>
21
<p>Уже упоминалось, что time возвратит количество секунд с начала т. н. эпохи Unix и вплоть до текущего времени. Однако на практике эта функция чаще используется не в "чистом виде", а вместе с иными функциями.</p>
22
<p>Для начала займёмся её использованием вместе с меткой текущей даты:</p>
22
<p>Для начала займёмся её использованием вместе с меткой текущей даты:</p>
23
<?php $now = time(); // метка echo $now; $nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24 ч.; 60 мин.; 60 сек. echo $nextWeek; // будет выведено что-то вроде 16026782231603283023<p>А теперь используем её же, но уже совместно с date(). Давайте выведем текущую дату двумя способами, а потом выведем дату, которая наступит через неделю:</p>
23
<?php $now = time(); // метка echo $now; $nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24 ч.; 60 мин.; 60 сек. echo $nextWeek; // будет выведено что-то вроде 16026782231603283023<p>А теперь используем её же, но уже совместно с date(). Давайте выведем текущую дату двумя способами, а потом выведем дату, которая наступит через неделю:</p>
24
<?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";<p>Теперь стоит поговорить о том, каким образом с функцией time используется mktime. Именно mktime возвращает метки времени Unix для даты, которую укажет пользователь.</p>
24
<?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";<p>Теперь стоит поговорить о том, каким образом с функцией time используется mktime. Именно mktime возвращает метки времени Unix для даты, которую укажет пользователь.</p>
25
<p>Аргументы могут быть разные, а также опущены справа налево:</p>
25
<p>Аргументы могут быть разные, а также опущены справа налево:</p>
26
<p>Лучше всего рассмотреть вышеописанное на примере. Давайте выведем в терминал: - текущую полную дату и время (часы, минуты, секунды); - время и дату завтрашнего дня; - время и дату следующего месяца того же дня; - ту же дату, но уже прошедшего года.</p>
26
<p>Лучше всего рассмотреть вышеописанное на примере. Давайте выведем в терминал: - текущую полную дату и время (часы, минуты, секунды); - время и дату завтрашнего дня; - время и дату следующего месяца того же дня; - ту же дату, но уже прошедшего года.</p>
27
<?php // выводим текущую дату и время echo date("r"); // создание метки для завтрашнего дня $tomorrow = mktime(0,0,0,date("m"),date("d")+1, date("Y")); echo date("r", $tomorrow); // создание метки для следующего месяца $nextmonth = mktime(0,0,0,date("m")+1,date("d"), date("Y")); echo date("r", $nextmonth ); // метка для прошлого года $lastyear= mktime(0,0,0,date("m")+1,date("d"), date("Y")-1); echo date("r", $lastyear);<p>На этом всё. Если интересуют более сложные и продвинутые знания по PHP, обратите внимание на соответствующий курс в OTUS!</p>
27
<?php // выводим текущую дату и время echo date("r"); // создание метки для завтрашнего дня $tomorrow = mktime(0,0,0,date("m"),date("d")+1, date("Y")); echo date("r", $tomorrow); // создание метки для следующего месяца $nextmonth = mktime(0,0,0,date("m")+1,date("d"), date("Y")); echo date("r", $nextmonth ); // метка для прошлого года $lastyear= mktime(0,0,0,date("m")+1,date("d"), date("Y")-1); echo date("r", $lastyear);<p>На этом всё. Если интересуют более сложные и продвинутые знания по PHP, обратите внимание на соответствующий курс в OTUS!</p>
28
<p><em>По материалам статей:</em>- https://labs-org.ru/php-6/; - https://space-base.ru/library/php/rabota-s-datoj-i-vremenem-v-php.</p>
28
<p><em>По материалам статей:</em>- https://labs-org.ru/php-6/; - https://space-base.ru/library/php/rabota-s-datoj-i-vremenem-v-php.</p>
29
29