Дата и время хранятся в специальном формате timestamp (временная метка) как количество секунд, прошедших от 01.01.1970 00:00:00 GMT (Greenwich Mean Time – среднее время по Гринвичу).
В приложениях обычно требуется другое представление даты и времени, для чего в PHP предусмотрены специальные функции.
Текущее системное время в формате timestamp (как целое количество секунд) можно получить с помощью функции time():
$now=time();
echo $now; // количество секунд
Для получения в этом же формате любого другого времени служит функция:
$segodnja=mktime(9,14,50,3,26,2012);
echo $segodnja;
В качестве аргументов этой функции можно использовать как конкретные числа, так и имена переменных.
Все вычисления над датами и временем выполняются только в формате timestamp .
Пример: определить количество секунд, часов, дней и лет, прошедших от 19.09.1949 (день рождения автора) до текущей даты:
<?php
$now = time();
$born=mktime(2,15,30,9,19,1949);
$x=$now-$born;
echo $x, " секунд";
echo "<BR>";
$x=$x/60/60; //в часах
echo $x, " часов";
echo "<BR>";
$x=$x/24; //в днях
echo $x, " дней";
echo "<BR>";
$x=$x/365; //в годах
echo $x, " лет";
echo "<BR>";
?>
Результат работы программы:
1972450760 секунд 547902.98888889 часов 22829.291203704 дней 62.546003297818 лет
Для преобразования временной метки в привычное представление используется функция gettate(). В качестве необязательного параметра ей можно передать временную метку, а функция возвращает ассоциативный массив, содержащий информацию о дате. Если функции ничего не передается, то выводится информация о текущем моменте времени, полученном от функции time().
Возвращаемый функцией gettate()ассоциативный массив имеет следующую структуру:
seconds секунды, прошедшие после полной минуты (0 – 59),
minutes минуты, прошедшие после полного часа (0 – 59),
Для представления даты и времени в требуемом формате как строки используется функция:
- число – количество секунд, прошедших с 01.01.1970 00:00:00 GMT - функция mktime(час, мин, сек, месяц, день, год),
- формат – строка символов форматирования даты и времени.
Допустимые символы:
d – день месяца – две цифры,
j – день месяца – одна или две цифры,
m – месяц – две цифры,
n – месяц – одна или две цифры,
Y – год – четыре цифры,
y – год – две цифры,
Н – часы – две цифры (от 00 до 23),
G – часы – одна цифра (от 0 до 23),
i – минуты – две цифры (от 00 до 59),
s – секунды – две цифры (от 00 до 59),
F – английское название месяца,
М – его трехбуквенное сокращение,
l – английское название дня недели,
D – его трехбуквенное сокращение.
Между символами форматирования можно использовать разделители:
d/m/Y
H:i:s
Если второй параметр функции date() не указан, то предполагается текущее время:
date(“d.m.Y”); текущая дата в формате 27.03.2012
date(“d-m-Y H:i:s); текущие дата и время в формате 27-03-2012 12:35:28
Для обратного перевода текстовой строки, содержащей дату и время, в формат timestamp, служит функция:
- число – необязательный числовой параметр; если он указан, то функция возвращает количество секунд относительно его значения, если не указан – то относительно текущего времени,
- дата_время – строка, в которой можно использовать следующие ключевые слова на английском языке:
- названия месяцев и дней недели полностью или в трехбуквенном сокращении,
- названия элементов даты и времени:
- слова:
ago – тому назад
now – сейчас
last – последний
next – следующий
this – этот
tomorrow – завтра
yesterday – вчера
- числа и знаки плюс и минус,
- временную зону gmt.
Примеры:
strtotime(“now”) – текущее время,
strtotime(“now + 48 hour”) – через два дня от текущего времени,
strtotime(“3 month ago”) – три месяца назад,
strtotime(“last Friday”) – предыдущая пятница,
strtotime(“next year”) – через год,
strtotime(“1949/09/19”) – 19.09.1949 00:00:00.
При возникновении ошибки преобразования функция возвращает -1.
Для проверки корректности введенной даты используется функция checkdate(месяц, день, год). Она возвращает true, если значение месяца находится между 1 и 12, значение дня приемлемо для данного месяца и года (учитывая високосный год), а значение года находится между 0 и 32767.
Функция – это конструкция, которая позволяет оформить блок программного кода
для многократного его использования.
Такой блок кода имеет свое уникальное имя со списком формальныхпараметров – переменных, реализующих алгоритм вычисления этой функции. Вычисленное значение функции возвращается в вызывающую программу оператором return.
Пример функций – математические функции PHP.
Пользовательские функции – это функции, определяемые самим программистом.