Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по PHP.doc
Скачиваний:
205
Добавлен:
04.06.2015
Размер:
2.76 Mб
Скачать

Дата и время

Дата и время хранятся в специальном формате timestamp(временная метка) как количество секунд, прошедших от01.01.1970 00:00:00 GMT(Greenwich Mean Time– среднее время по Гринвичу).

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

Текущеесистемное время в форматеtimestamp(как целое количество секунд) можно получить с помощью функцииtime():

$now=time();

echo $now; // количество секунд

Для получения в этом же формате любого другого времени служит функция:

Mktime(час, мин, сек, месяц, день, год);

$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),

hoursзначение часов дня (0 – 23),

mdayдень месяца (1 – 31),

wdayдень недели (0 – 6),

monмесяц года (1 – 12),

yearгод –четыре цифры,

ydayдень года (0 – 365),

weekdayдень недели –название,

monthмесяц года –название,

0метка времени:

$date_array = getdate();

foreach ($date_array as $index=>$value)

{

echo “$index => $value”;

echo “<BR>”;

}

На экран будет выведено:

seconds => 18 minutes => 42 hours => 9 mday => 21 wday => 6 mon => 4 year => 2012 yday => 111 weekday => Saturday month => April 0 => 1334968938

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

Date(формат, число);

- число– количество секунд, прошедших с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

j-n-y

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, служит функция: