Вы находитесь на странице: 1из 4

Лекции курса PHP7 + MySQL с нуля

(краткое содержание)

ЛЕКЦИЯ 36. СТАНДАРТНЫЕ ФУНКЦИИ. ДАТА И ВРЕМЯ.

В PHP представлено большое количество инструментов, предназначенных


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

Часовой пояс
PHP версии 5.1 и выше в большей своей части, ориентируется на работу с
датой и временем с учетом часового пояса, установленного в директиве
date.timezone, установленной в разделе date файла php.ini.
В локальном сервере OpenServer часовой пояс привязывается к тому, который
установлен в операционной системе. При разворачивании Вашего проекта на веб-
сервере стоит уточнить настройки часового пояса, но в большинстве случаев это
будет гринвичское время. В некоторых ситуациях административная панель веб-
сервера дает возможность установить часовой пояс, который необходим лично
Вам.
В случае, если Вы не знаете, какой часовой пояс установлен, либо установлен
не подходящий Вам, его можно поменять с помощью функции
date_default_timezone_set().
Установить часовой пояс необходимо в начале скрипта, который планирует
использовать данные о датах и времени:
<?php
date_default_timezone_set(“Europe/Moscow”);

?>

Формат времени timestamp


Большинство функций, работающих со временем в языках программирования
ориентируются на нулевую дату. Этой датой является 1 января 1970 года по
Гринвичу – так называемое начало «эпохи UNIX».
Функция:
int time(),
возвращает время в секундах, прошедшее с момента указанной нулевой даты.
Функция:
mixed microtime([bool $as_float = false]),
возвращает строку в формате «дробная_часть целая_часть», где целая_часть –
результат работы функции time(), а дробная_часть – точное время в долях секунды.
Для работы с данными функции microtime() необходимо обработать результат
и перевести его в числовой тип. Для того, чтобы не производить эту операцию
каждый раз, параметр $as_float необходимо перевести в состояние true. В этом
случае результат работы функции microtime() будет возвращать вещественное
число секунд и долей секунд.
В качестве примера использования функции microtime() можно привести
вариант вычисления времени работы какого-либо программного кода или его части.
Пример такого вычисления приведен в листинге 36.1.

1
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)

Листинг 36.1. Время вычисления работы скрипта

//Определяем начало времени запуска скрипта


define("SCRIPT_START", microtime(true));

$array = [];

for($i = 0; $i < 10; $i++)


$array[$i] = pow(mt_rand(-10, 10), mt_rand(-5, 5)) * mt_rand(-4, 4) *$i;

echo "<b>Полученный массив элементов:</b>";


foreach($array as $k => $v)
echo "<p>[{$k}] => ({$v});</p>";

//Выводим на экран время работы скрипта


echo "<p><b>Время работы скрипта:</b> ".(microtime(true) - SCRIPT_START)."
секунд...</p>";

В результате Вы получите время работы скрипта в долях секунды, т. к.


процессы, запущенные в данном листинге, не занимают много ресурсов и
производится практически моментально. В некоторых случаях Вы можете увидеть
результат равный 0 – это не означает, что скрипт не сработал, а лишь значит то,
что время выполнения заняло настолько малый промежуток, что он не вошел в
диапазон вещественных чисел, допустимых в PHP.

Строковое представление даты


Для представления даты и времени в более удобном для человеческого
восприятия виде существует функция date(). Ее синтаксис:
string date(string $format [, int $timestamp])
Функция возвращает форматированную строку на основе заданных
параметров. Необязательный параметр $timestamp задает значение времени, к
которому будет применено форматирование. Если $timestamp не задан,
возвращается текущее время.
Параметр $format может содержать следующие элементы:
Таблица 36.1. Параметр $format функции date()
Параметр Значение параметра
U Количество секунд, прошедших с полуночи 1 января 1970 года
z Номер дня от начала года
Y Год, 4 цифры
y Год, 2 цифры
F Название месяца, например, January, June, September
m Номер месяца
M Название месяца в трехсимвольной аббревиатуре: Jan
d Номер дня в месяце, всегда 2 цифры, где первая может быть 0
j Номер дня в месяце без предваряющего нуля
w День недели, где 0 – воскресенье
l День недели в текстовом виде, например, Monday

2
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)

D День недели в английском трехсимвольном представлении


a am или pm
A AM или PM
h Часы, 12-часовой формат
H Часы, 24-часовой формат
i Минуты
s Секунды
S Английский числовой суффикс (nd, th и т. п.)
Другие символы, которые не будут распознаны, как форматирующие, будут
подставлены в том виде, в котором указаны в параметре $format.
Приведем пример функции в листинге 36.2.
Листинг 36.2. Функция date()

//Выводим различные варианты форматирования даты


echo "<p><b>Результат работы функции date(): </b>".date("Сейчас: d.F.Y, время:
H:i:s")."</p>";
echo "<p><b>Результат работы функции date(): </b>".date("Функция определения
текущего времени: Y-m-d, время: H:i:s", time())."</p>";
echo "<p><b>Результат работы функции date(): </b>".date("Заданное значение в
секундах от 01.01.1970: d M Y, l, время: H:i:s", 12242411)."</p>";

Построение timestamp
Порой для выполнения определенных задач необходимо произвести обратное
преобразование определенного сочетания даты и времени в формат timestamp.
Для этой задачи существует ряд функций, одна из которых наиболее
интересна в силу своей универсальности и свободы определения формата даты и
времени:
int strtotime(string $time [, int $timestamp])
Функция принимает строковый параметр $time, заданный в удобном формате,
например:
- “now”;
- “12 December 2017”;
- “+5 day”;
- “+1 week 4 days 2 hours 15 seconds”;
- “next day”;
- “last Sunday”.
Результат универсальности принимаемых форматов представлен в листинге
36.3
Листинг 36.3. Работа функции strtotime()

//Запускаем функцию strtotime и выводим результат в формате timestamp


echo "<b>Результат работы функции strtotime()</b>";
echo "<p>".strtotime("now").";</p>";
echo "<p>".strtotime("12 December 2017").";</p>";
echo "<p>".strtotime("+5 day").";</p>";
echo "<p>".strtotime("+1 week 4 days 2 hours 15 seconds").";</p>";
echo "<p>".strtotime("next day").";</p>";

3
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)

echo "<p>".strtotime("last Sunday").";</p>";

//Переводим результат timestamp в формат дд месяц гггг день_недели чч:мм:сс


echo "<b>Результат перевода timestamp-формата:</b>";
echo "<p>".date("d F Y l H:i:s", strtotime("now")).";</p>";
echo "<p>".date("d F Y l H:i:s", strtotime("12 December 2017")).";</p>";
echo "<p>".date("d F Y l H:i:s", strtotime("+5 day")).";</p>";
echo "<p>".date("d F Y l H:i:s", strtotime("+1 week 4 days 2 hours 15 seconds")).";</p>";
echo "<p>".date("d F Y l H:i:s", strtotime("next day")).";</p>";
echo "<p>".date("d F Y l H:i:s", strtotime("last Sunday")).";</p>";

Более подробный перечень специфических воспринимаемых форматов даты


и времени содержится в документации.