Урок 4: Работа с датой и временем
В этом уроке мы попытаемся рассмотреть различные опции работы с датой и временем в PHP. На предыдущем занятии мы видели очень простые примеры того, что собой представляет РНР. В этом уроке мы более внимательно рассмотрим функцию date.
Функции даты и времени
В PHP имеется ряд функций для работы с датами и временем. В этом уроке разберём наиболее важную из этих функций: date.
Принимая различные параметры, функция date может возвращать дату/время в различных форматах. Вот наиболее часто используемые параметры:
- date("y")
- Возвращает текущий год даты - на сегодня возвращает: 24
- date("m")
- Возвращает текущий месяц даты - на сегодня возвращает: 09
- date("F")
- Возвращает текущий месяц даты - на сегодня возвращает: September
- date("d")
- Возвращает текущее число месяца даты - на сегодня возвращает: 14
- date("l")
- Возвращает название для недели даты - на сегодня возвращает: Saturday
- date("w")
- Возвращает текущий день недели даты - на сегодня возвращает: 6
- date("H")
- Возвращает текущий час - в данное время возвращает: 11
- date("i")
- Возвращает текущую минуту - в данное время возвращает: 22
- date("s")
- Возвращает текущую секунду - в данное время возвращает: 31
Следующий пример иллюстрирует использование функции date:
<html> <head> <title>Время и дата</title> </head> <body> <?php echo "<p>Сегодня " . date("l") . "</p>"; ?> </body> </html>
Текущее время: 1726312951
Теперь держитесь крепче... немного притормозим! Функция time() возвращает текущее время в виде количества секунд, прошедших после 1 января 1970 года, 12:00 PM, GMT.
<html> <head> <title>Время и дата</title> </head> <body> <?php echo "<p>Сейчас ровно " . time() . " секунд после January 1, 1970, 12:00 PM, GMT </ p> "; ?> </body> </html>
Отображение в виде количества секунд после January 1, 1970, 12:00 PM GMT называется "timestamp/штамп времени" (UNIX timestamp), который весьма употребителен при работе с датой/временем будущего или прошлого.
По умолчанию функция date использует текущий timestamp (т. е. текущее значение time()). но с помощью дополнительного параметра вы можете специфицировать другой штамп времени и таким образом работать с прошлым или будущим. В следующем примере мы установим timestamp на 0 секунд после January 1, 1970 12:00 PM, GMT. Тогда можно узнать, каким днём недели было 1 января 1970 года.
<html> <head> <title>Время и дата</title> </head> <body> <?php echo "<p>1 января 1970 года - " . date("l",0) . "</p>"; ?> </body> </html>
Если вы не гений-математик, вам будет нелегко быстро перевести количество секунд после January 1, 1970 в в конкретное время прошлого или будущего. Но здесь вам поможет ещё одна функция: mktime, выполняющая вычисления за вас.
Синтаксис функции mktime таков (hour, minute, second, month, day, year). Следующий пример - конвертация первой фазы луны (July 21, 1969, 02:56):
<html> <head> <title>время и дата</title> </head> <body> <?php echo mktime (2,56,0,7,21,1969); ?> </body> </html>
Заметьте, что возвращается отрицательное число, поскольку это дата ранее January 1, 1970.
Теперь можно объединить это с функцией date и определить, какой тогда был день недели.
<html> <head> <title>Время и дата</title> </head> <body> <?php echo date("l", mktime(2,56,0,7,21,1969)); ?> </body> </html>
Для чего это можно использовать?
Всё это пока что может показаться несколько отвлечённым. Кроме того, для чего ещё модно в этой жизни использовать функцию вроде time()? И что ещё важнее: когда наконец вы узнаете что-то реально необходимое для ваших вэб-страниц?
Ответ: всё, что вы здесь изучаете - строительные блоки, и единственное, что может ограничивать вас, это ваше собственное творческое воображение! Рискну утверждать, что вы уже знаете больше, чем предполагаете. Например, вы в курсе, что можете сделать сайт с различными фоновыми изображениями для каждого дня недели и что это будет работать в любом браузере?
Это действительно правда! Посмотрите на пример:
<html>
<head>
<title>Время и дата</title>
</head>
<body background="background_<?php echo date("w"); ?>.png">
</body>
</html>
Этот пример, с динамическим фоновым изображением, требует наличия семи изображений, именованных background_1.png, background_2.png, background_3.png, etc.
Если пользователь входит на ваш сайт во вторник, фоновым будет изображение background_2.png, на следующий день - background_3.png. Легко и просто!
На следующем уроке вы узнаете о о новых строительных блоках, которые можно использовать для создания циклов и повторов вашего кода.
PHP увлекателен, вы не находите?