Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

23.2. Функции даты и времени в PHP

Из этого параграфа вы узнаете, как написать обычный скрипт для показа времени или более сложные скрипты, где будут использованы функции даты и времени вместе с календарными.

Checkdate

Проверяет правильность Синтаксис:

int checkdate (int month, int day, int year);

Возвращает true, если данная дата правильна, иначе false. Проверяет правильность даты, заданной аргументами. Дата считается правильной, если:

год между 1900 и 32 767 включительно;

месяц между 1 и 12 включительно.

День находится в диапазоне разрешенных дней данного месяца. Високосные годы учитываются.

Date

Формат локального времени/даты. Синтаксис:

string date (string format, int timestamp);

Возвращает строку, отформатированную согласно данной строке, используя данную временную метку или текущее локальное время, если не задана временная метка.

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

а — am или pm;

А — AM или РМ;

d — день месяца, цифровой, 2 цифры (на первом месте нуль);

D — день недели, текстовый, 3 буквы, т. е. Fri;

F — месяц, текстовый, длинный, т. е. January;

h — час, цифровой, 12-часовой формат;

Н—час, цифровой, 24-часовой формат;

i — минуты, цифровой;

j — день месяца, цифровой, без начальных нулей;

l (строчная L) — текстовый длинный деньнедели, т. е. Friday;

m — месяц цифровой;

М — текстовый месяц, 3 буквы, т.е. Jan;

s — секунды

S — английский порядковый суффикс, текстовый, 2 символа, т. е. th, nd;

U — секунды с начала века;

Y — год, цифровой, 4 цифры;

w — день недели, цифровой, 0 означает воскресенье;

у — год, цифровой, 2 цифры;

z — день года, цифровой, т. е. 299.

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

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

print(date( "1 dS of F Yh:i:s A" ));

print("July 1, 2000 is on a ". date("l", mktime(0,0,0,7,1,2000)));

Функции date() mktime() возможно использовать вместе, для того чтобы найти в будущем или прошлом.

Пример 23.2. Использование функций date() и mktime()

$tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));

$lastmonth = mktime(0, 0, 0, date ("m")-1, date ("d"), date ("Y"));

$nextyear = mktime(0, 0, 0,date ("m"), date("d", date ("Y")+1);

Чтобы отформатировать даты на других языках, надо использовать функции setlocale() и strftime().

Strftime

Форматирует локальное время согласно установкам locale. Синтаксис:

string strftime(string format, int timestamp);

Возвращает строку, отформатированную согласно данной форматной строке, используя данную временную метку или текущее локальное время, если метка не задана. Названия месяцев, недель и т. д., зависящие от языка строки и связанные с текущим locale, устанавливаются с помощью setlocale().

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

%а — сокращенное название дня недели согласно текущему locale;

%А — полное название дня недели согласно текущему locale;

%B — сокращенное название месяца согласно текущему locale;

%b — полное название месяца согласно текущему locale;

%с — предпочтительное представление даты и времени для текущего locale;

%d — день месяца как десятичное число (в диапазоне от 0 до 31);

%Н — час как десятичное число в 24-часовом формате (в диапазоне от 00 до 23);

%I — час как десятичное число в 12-часовом формате (в диапазоне от 01 до 12);

%j — день года какдесятичное число (в диапазоне от 001 до 366);

%m — месяц какдесятичное число (в диапазоне от 1 до 12); — минуты как

%Р — am либо pm согласно текущему времени или соответствующие строки для текущего locale;

%s — секунды какдесятичное число;

%U — номер недели текущего года какдесятичное число начиная с первого воскресенья в качестве первого дня первой недели;

%W — номер недели текущего года как десятичное число начиная с первого понедельника в качестве первого дня первой недели;

%w — день недели как целое число, воскресенье — нулевой день;

%X — предпочитаемое представление даты для текущего locale, не включающее время;

%х — предпочитаемое представление временидля текущего locale, не включающее дату.

%у — год как десятичное число без столетия (в диапазоне от 00 до 99);

%Y — год как десятичное число, включая столетие;

%Z — временная зона либо название или сокращение;

%% — символ %.

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

setlocale ("LC__TIME", "С");

print(strftime("%А in Finnish is "));

setlocale ("LC_TIME", "fi");

print(strftime("%A, in French "));

setlocale("LC_TIME", "fr");

print (strftime ("%A and in German "));

setlocale("LCJTIME", "de");

print(strftime("%A.\n"));

Пример будет работать, если у вас установлены соответствующие locale.

Getdate

Получает информацию одате/времени. Синтаксис:

array getdate(int timestamp);

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

"seconds" — секунды;

"minutes" — минуты;

"hours" — часы;

"mday" — день месяца;

"wday" — день недели, цифровой;

"mon" — месяц, цифровой;

"year" — год, цифровой;

"yday" — день года, цифровой, т.е. 299;

"weekday" — день недели, текстовый, полный, т. е. Friday;

"month" — месяц, текстовый, полный, т. е. January;

Gmdate

Форматирует GMT/CUT время/дату. Синтаксис:

string gmdate (string format, int timestamp);

Аналогичная функции date(), за исключением того, что время возвращается в Гринвичском формате Greenwich Mean Time (GMT). Например, при запуске в Финляндии (GMT + 0200) первая строка примера 23.4 напечатает «Jan 01 1998 00:00:00», В ТО время как вторая строка — «Dec 31 1997 22:00:00».

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

echo date("M d Y H:i:s", mktime(0,0,0,1,1,1998));

gmdate("M d Y H:i:s", mktime(0,0,0,1,1,1998));

Mktime

Получает временную метку UNIX для даты. Синтаксис:

int mktime (int hour, int minute, int second, int month, int day, int year);


ВНИМАНИЕ

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


Mktime

Возвращает временную метку Unix согласно данным аргументам. Эта временная метка является целым числом, равным количеству секунд между точкой отсчета Unix (1 января 1970 г.) и указанным временем.

Аргументы могут быть опущены справа налево; каждый опущенный таким образом аргумент будет установлен в текущую величину согласно локальной дате и времени.

Mktime полезна при арифметических действиях с датой и ее проверкой, она автоматически вычисляет корректную величину для вышедших за границы параметров. Например, каждая из следующих строк возвращает строку «Jan-01-1998».

Пример 23.5. Применение функции mktime()

echo date("M-d-Y", mktime (0,0,0,12, 32, 1997));

echo date("M-d-Y", mktime(0,0, 0, 13, 1,1997) );

echo date("M-d-Y", mktime(0,0, 0, 1, 1,1998) );

Gmmktime

Получает временную метку UNIX для даты в GMT. Синтаксис:

int gmmktime (int hour, int minute, int second, int month, int day, int year);

Идентична mktime(), за исключением передаваемых параметров, представляющих дату в GMT.

Time

Возвращает текущую временную метку UNIX. Синтаксис:

int time (void) ;

Возвращает текущее время, измеренное в секундах с эпохи Unix (1 января 1970 г. 00:00:00 GMT).

Microtime

Возвращает текущую временную метку в микросекундах. Синтаксис:

string microtime(void);

Возвращает строку «msec sec», где sec — текущее время, измеренное в секундах с эпохи Unix (1 января, 1970 г. 00:00:00 GMT), a msec — часть в микросекундах. Эти функции доступны только в операционных системах, поддерживающих системный вызов gettimeofday().

<< Предыдущий параграф Следующий параграф >>
Оглавление