Работа с датами и временем в PHP

Основным временным данным, используемым в PHP, является время в секундах, прошедшее с начала 1 января 1970 года. Это временное данное называется в PHP меткой времени (timestamp).

Получить метку времени для заданной даты и времени можно с помощью функции

int mktime([int hour [, int minute [, int second

[, int month [, int day [, int year]]]]]])

где hour, minute и second – значения соответственно часа, минуты и секунды, month – значение индекса месяца (от 1 до 12), day – значение дня в месяце (от 1 до 31), year – значение года. Если параметры, начиная с некоторого параметра, пропущены, то они заменяются значениями текущей даты и времени.

Получить метку времени для текущей даты и текущего времени можно с помощью функции

int time().

Для получения компонент даты и времени по заданной метке времени timestamp используется функция

array getDate([int timestamp]).

Если параметр при вызове функции не задан, выводятся компоненты для текущей даты и текущего времени. Функция возвращает ассоциативный массив со следующими ключами и значениями даты и времени:

· 'seconds' – количество секунд (от 0 до 59);

· 'minutes' – количество минут (от 0 до 59);

· 'hours' – количество часов (от 0 до 23);

· 'mday' – число в месяце (от 1 до 31);

· 'wday' – индекс дня недели в месяце (от 0 – воскресенье до 6 – суббота);

· 'mon' – индекс месяца (от 0 –январь до 11 – декабрь);

· 'year' – год (четыре цифры);

· 'yday' – индекс дня в году (от 0 до 365);

· 'weekday' – наименование дня недели (например, Friday);

· 'month' – наименование месяца (например, May);

· 0 – метка времени.

Функция

array getTimeOfDay()

возвращает ассоциативный массив со следующими ключами и значениями времени:

· 'sec' – количество секунд, прошедших с 1 января 1970 года до текущего момента;

· 'usec' – количество микросекунд, прошедших с последней секунды;

· 'minuteswest' – смещение к западу от Гринвича (в минутах);

· 'dsttime' – тип коррекции летнего времени – DST (Daylight Saving Time – светосберегающее время) (1 – летнее время, 0 – зимнее время, -1 – тип коррекции не определен).

Пример 4.6.130. Использование функций mktime(), time(), getDate() и getTimeOfDay():

1. Следующий фрагмент программы получает и выводит текущую дату и текущее время:

// Получение метки для текущей даты

// и текущего времени

$currentDateTime = time();

// Получение компонент для текущей даты

// и текущего времени

$dateTimeValue = getDate($currentDateTime);

// Вывод значений компонент текущей даты

echo "\nDate: ", $dateTimeValue['month'], " ",

$dateTimeValue['mday'], " ", $dateTimeValue['year'],

", ", $dateTimeValue['weekday'];

// Определение значения часа

$hour = $dateTimeValue['hours'];

$hour = $hour>9?$hour:'0'.$hour;

// Определение значения минуты

$minute = $dateTimeValue['minutes'];

$minute = $minute>9?$minute:'0'.$minute;

// Вывод значений компонент текущего времени

echo "\nTime: ", $hour, ":", $minute;

Вывод этого фрагмента имеет следующий вид:

2. Определение и вывод временной зоны и значения DST:

// Определение текущего времени

$timeValue = getTimeOfDay();

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

if($timeValue['minuteswest'] < 0)

$offsetSign = "+";

else

$offsetSign = "-";

// Определение DST

$DSTStatus = $timeValue['dsttime'] == 1?'on':'off';

// Вывод зоны и DST

echo "\nTimezone: ", $offsetSign,

abs($timeValue['minuteswest'])/60, " hours DST: ",

$DSTStatus;

В результате выполнения этого фрагмента будет выведена следующая строка:

3. Определение дня недели для заданной даты:

// Получение метки времени

// для 1 января 1957 года

$timestamp = mktime(0, 0, 0, 1, 1, 1957);

// Получение компонент даты

$dateValue = getDate($timestamp);

// Получение и вывод дня недели для заданной даты

echo "\nWeek day for ", $dateValue['month'], " ",

$dateValue['mday'], " ", $dateValue['year'],

" is ", $dateValue['weekday'];

В результате выполнения этого фрагмента будет выведена следующая строка:

Функция

bool checkDate(int month, int day, int year)

возвращает true, если дата (month – индекс месяца, day – день в месяце и year – год) является правильной и false – в противном случае. Дата считается правильной, если значение года лежит в диапазоне от 1 до 32767 включительно, значение индекса месяца лежит в диапазоне от 1 до 12, а день – в диапазоне от 1 до максимального значения для данного месяца – 30 или 31. Для количества дней в феврале (28 или 29) учитывается, является ли год високосным.

Пример 4.6.131. Использование функции checkDate():

Следующий фрагмент программы проверяет правильность задания дат 27 мая 2009 г. и 31 июня 2009 г.:

// Проверка первой даты

$isCorrectDate1 = checkDate(5,27,2009)?

"correct":"incorrect";

// Проверка второй даты

$isCorrectDate2 = checkDate(6,31,2009))?

"correct":"incorrect";

echo "5/27/2009 is $isCorrectDate1 date",

"\n6/31/2009 is $isCorrectDate2 date";

Вывод этого фрагмента имеет следующий вид:

Вторая дата является неверной, поскольку в июне 30 дней.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: