Книга: Справочник по PHP

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

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

checkdate

Проверяет правильность даты/времени.

Синтаксис:

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

Функция checkdate() проверяет правильность даты, заданной в ее аргументах.

Возвращает true если дата, указанная как "month, day, year" (месяц, число, год), правильна, иначе false. Дата считается правильной, если:

$month=1;
$day=10;
$year=2002;
if(checkdate($month,$day,$year)) echo "Такой день есть!";
else echo "Такого дня нет!";

Выведет:

Такой день есть!

$month=13;
$day=10;
$year=2002;
if(checkdate($month,$day,$year)) echo "Такой день есть!";
else echo "Такого дня нет!";

Выведет:

Такого дня нет!

date

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

Синтаксис:

string date(string format [, int timestamp]);

Эта функция возвращает строку, содержащую дату и время, отформатированную согласно строке format и используя временную метку timestamp или текущее локальное время, если не задана временная метка.

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

Все остальные символы в строковом аргументе format возвращаются в результирующей строке "как есть".

Формат "Z" всегда возвращает 0 при использовании с функцией gmdate().

echo date("Сегодня d.m.Y");
//Сегодня 31.01.2002
echo date( "l dS of F Y h:i:s A" );
// Thursday 31st of January 2002 12:51:19 PM
echo "July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000));
// July 1, 2000 is on a Saturday

Функции 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);

localtime

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

Синтаксис:

array localtime([int timestamp [, bool is_associative]]);

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

Если второй необязательный параметр равен нулю (по умолчанию), то возвращаемый массив будет численно индексирован; в противном случае возвращается ассоциативный массив, где элементы имеют следующие значения:

gettimeofday

Получени даты системным вызовом.

Синтаксис:

array gettimeofday();

Эта функция возвращает ассоциативный массив, который содержит дату, возвращенную системным вызовом. Функция является интерфейсом системной функции gettimeofday(2).Возвращаемый ассоциативный массив содержит следующие элементы:

strftime

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

Синтаксис:

string strftime(string format [, int timestamp]);

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

Функцией setlocale() можно выставить язык, на котором будут выводиться названия месяцев и дней.

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

setlocale ("LC_TIME", "C");
print(strftime("%A in Finnish is "));
setlocale ("LC_TIME", "fi");
print(strftime("%A, in French "));
setlocale ("LC_TIME", "fr");
print(strftime("%A and in German "));
setlocale ("LC_TIME", "de");
print(strftime("A.n"));

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

getdate

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

Синтаксис:

array getdate(int timestamp);

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

print_r(getdate(time()));

Приведенный пример выведет следующее:

Array( [seconds] => 23 [minutes] => 44 [hours] => 22 [mday] => 15 [wday] => 0 [mon] => 8 [year] => 2004 [yday] => 227 [weekday] => Sunday [month] => August [0] => 1092595463)

gmdate

Получение даты в форматированной строке для времени GMT.

Синтаксис:

string gmdate(string format, int timestamp);

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

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

gmstrftime

Форматирование локальных времени/даты.

Синтаксис:

string gmstrftime(string format, int timestamp);

Действие этой функции аналогично действию функции strftime() с тем отличием, что возвращается время по Гринвичу (GMT).

Например, при запуске в зоне (GMT -0500) первая строка бедт следующей: "Dec 31 1998 20:00:00", а вторая: " Jan 01 1999 01:00:00".

setlocale("LC_TIME", "en_US");
echo strftime("%b %d %Y %H:%M:%S", mktime(20,0,0,12,31,98))."n";
echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20,0,0,12,31,98))."n";

mktime

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

Синтаксис:

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

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

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

Аргумент is_dst, указывает, осуществлен ли переход на летнее время (1) или нет (0); если не известно, то аргумент - (-1)

Функция возвращает timestamp, соответствующий указанной дате.

Правильность даты, переданной в параметрах, не проверяется. В случае некорректной даты ничего особенного не происходит - функция "делает вид", что ее не касается, и формирует соответствующий timestamp.

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

Аналог функции time() для времени GMT.

Синтаксис:

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

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

time

Получение времени в секунадх.

Синтаксис:

int time();

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

Этот формат данных принят в Unix как стандартный (называется "UNIX timestamp"): в частности, время последнего изменения файлов указывается именно в таком формате. Вообще говоря, почти все функции по работе со временеи имеют дело именно с таким его представлением (которое называется timestamp). То есть представление " количество секунд с 1 января 1970 года" весьма универсально и, что главное, - удобно.

echo time();

microtime

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

Синтаксис:

string microtime();

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

Но дело в том, что милисекунды в различных OC выглядят по разному. Например в Unix это действительно число микросекунд, а в Windows - непонятное значение.

echo microtime(); // в Windows выведет что-то типа 0.53033200 1012468870

strtotime

Лексическое преобразование строки времени в Unix timestamp.

Синтаксис:

int strtotime(string time [, int now]);

В аргументе time функция получает дату в англоязычном формате, а затем преобразует ее в целочисленный формат Unix timestamp.

echo strtotime("now")."n";echo strtotime("10 September 2002")."n";echo strtotime("+2 day")."n";echo strtotime("+3 week")."n";echo strtotime("+1 week 2 days 4 hours 34 seconds")."n";

Оглавление книги


Генерация: 0.883. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз