Дата и время
Функции работы с данными
🕛 01.11.2006, 13:15
time Получение времени в секундах (UNIX timestamp)
int time(void);
Возвращаемое значение равняется числу секунд, прошедших с момента начала «Эпохи Unix» (1 января, 1970, 00:00:00 GMT). Этот формат называется «UNIX timestamp».
echo time(); // выводит, например: 987972956
См. также date().
microtime
Получение в строке текущей метки времени «UNIX timestamp»
string microtime(void);
Возвращает строку формата «msec sec», где sec - текущее время, измеренное в целых секундах с момента начала «Эпохи Unix » (0:00:00, 1 января, 1970 GMT), a msec - это микросекундная часть. Эта функция доступна только на системах, имеющих системную функцию gettimeofday().
echo microtime(); // выводит, например
0.85738800 98772251
См. также time().
getdate
Получение даты и времени в массиве array getdate (Int timestamp)
Возвращает ассоциативный массив, содержащий информацию о дате и времени, полученную в целочисленном аргументе timestamp, с разделением на следующие элементы:
«seconds» - секунды;
«minutes» - минуты;
«hours» - часы;
«mday» - день месяца;
«wday» - день недели, числовой;
«топ» - месяц, числовой;
«year» - год, числовой;
«yday» - день в году, числовой; например: 327;
«weekday» - день недели, текстовый, полный; например: «Friday»;
«month» - месяц, текстовый, полный; например: «January»;
0 - «UNIX timestamp», полученный аргумент.
print_r (getdate (time())),
Выводит следующее: Array (
[seconds] => 50
[minutes] => 55
[hours] => 13
[mday] => 16
[wday] => 0
[mon] => 4 >
[year] => 2008
[yday] => 299
[weekday] => Sunday
[month] => Apn 1
[0] => 987414950 )
localtime
Получение времени/даты в массиве
array localtime ([int timestamp [, bool is_associative]])
Первый аргумент функции timestamp - метка времени UNIX, если он не указывается, то используется текущее время. Если второй аргумент (is_associative) равен 0 (это же значение используется по умолчанию), то возвращаемый массив будет численно индексирован; в противном случае возвращается ассоциативный массив, где элементы имеют следующее значение:
([1]). «tm_sec» - секунды;
([2]). «tmjrnn» - минуты;
([3]). «tm_hour» - часы;
([4]). «tmjnday» - день месяца;
([5]). «tmjnon» - месяц в году;
([6]). «tm_year» - год (не совместимый с 2000);
([7]). «tm_wday» - день недели;
([8]). «tm_yday» - день в году;
([9]). «tm_isdst» - активен ли переход на летнее время.
gettimeofday
Получение даты системным вызовом array gettimeofday (void)
Возвращает ассоциативный массив, содержащий дату, возвращенную системным вызовом. Функция является интерфейсом системной функции gettimeofday(2). Массив содержит следующие элементы:
«sec» - секунды:
«usec» - микросекунды;
«minuteswest» - смещение к западу от Гринвича, в минутах;
«dsttime» - тин dst коррекции (переход на летнее время).
checkdate
Проверка даты на соответствие григорианскому календарю
int checkdate (int month, int day, int year)
Возвращает TRUE, если дата, указанная как «month, day, year» («месяц», «число», «год»), допустима, иначе возвращает FALSE. При проверке принимаются в расчет:
Год (year) находится в пределах от 1 до 32 767 включительно.
Месяц (month) находится в пределах от 1 до 12 включительно.
День Б месяце (day) находится в пределах, допустимых для соответствующего месяца month (от 1 до 28-31). Високосные года при этом также принимаются в расчет.
date
Получение даты в форматированной строке
string date (string format [, int timestamp])
Возвращает строковое значение даты и времени, извлеченное из упакованного в целочисленном аргументе значения timestamp. (Если аргумент timestamp не указан, то используются текущие дата и время.)
При этом возвращаемая строка форматируется согласно указанному в строковом аргументе format значению, которое может состоять из следующих символов, заменяемых на временные компоненты:
s - секунды, от «00» до «59»;
i - минуты, от «00» до «59»;
g - часы, 12-часовой формат без нулей, от «1» до «12»;
6 - часы, 24-часовой формат без нулей, от «О» до «23»;
h - часы, 12-часовой формат, от «01» до «12»;
Н - часы, 24-часовой формат, от «00» до «23»;
а - «до» или «после» полудня: «am» или «рт»;
А - «До» или «После» полудня: «AM» или «РМ»;
d - день месяца (2 цифры с нулями), от «01» до «31»;
j - день месяца (1-2 цифры без пулей), от «1» до «31»;
S - англоязычный суффикс числа из двух букв, например: «th», «nd»;
l (маленькая 'L') - название дня недели по-английски; например: «Friday»;
D - трехбуквенное английское сокращение дня недели; например: «Fri»;
w - порядковое число дня в неделе, от «О» (воскресенье) до «6» (суббота);
z - порядковое число дня в году, от «О» до «365»;
т - месяц (2 цифры с нулями), от «01» до «12»;
п - месяц (1-2 цифры без нулей), от «1» до «12»;
F - английское название месяца, например: «January»;
М - трехбуквенное английское сокращение месяца, например: «Jan»;
t - число дней в указанном месяце, от «28» до «31»;
Y - год, 4 цифры; например: «1999»;
у - год, 2 цифры; например: «99»;
I (большая i) - «1», если действует переход на «летнее время», иначе «О»;
L - «О», если год не високосный, или «1», в противном случае;
В - «Swatch Internet time»;
Т - временная зона компьютера, например: «MDT» (доступна не всегда);
U - целое число секунд, прошедших с момента начала эпохи UNIX (доступна не всегда);
Z - смешение временной зоны в секундах (от «-43200» до «43200»).
Все остальные символы в строковом аргументе format возвращаются в результирующей строке «как есть». Формат «Z» всегда возвращает «О» при использовании с функцией gmdate().
print (date ("1 dS of F Y h.i.s A")); //выводит: Monday 21th
of April 2007 01:33:43 PM
Дата и время 141
print ("1-е Июля. 2000 года - это: " .
date ("I". mktime(0.0.0,7.1.2000))).
//выводит: 1-е Июля. 2222 года - это- Saturday
Stomorrow = mktime (O.O.O.dateC'm")
.date("d")+l.date("Y")). Slastmonth = mktime (0.0.0.date("m")-l.date("d").
dateC'Y")); Snextyear = mktime
(O.O.O.dateC'm"), dateC'd").
date("Y")+l):
Для форматирования дат в других языках используйте функции setlocale() и strftime().
См. также: gmdate() и mktime().
gmdate
Аналог функции date() для времени 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 ("К 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)).
См. также: date(), mktime() и gmmktime().
strftime
Получение форматированной строки времени с использованием локальных установок
string strftime (string format [, int timestamp])
Возвращает строку согласно формату, указанному в аргументе format, для указанной в аргументе timestamp метки времени (если метка времени не указывается, то используется текущее время). Язык, на котором выводятся названия месяцев и дней, устанавливается функцией set!оса!е(). В строке формата распознаются следующие спецификаторы:
%а - сокращение дня недели в языке по умолчанию; например, «Wed»;
%А - полное название дня недели в языке по умолчанию; например, «Wednesday»;
%b - сокращение названия месяца в языке по умолчанию; например, «Apr»;
%В - полное название месяца в языке по умолчанию; например, «April»;
%с - формат латы времени в установках по умолчанию; например, «04/18/00 13:44:17»;
£С - номер века (год, деленный на 100 и без дробной части, от 00 до 99);
%d - число месяца (от 00 до 31);
%0 - эквивалент #m/£d/£y;
%е - число месяца (вместо незначащего нуля ставится пробел), от « 1» до «31»;
%h - аналог Яb;
%H- час в 24-часовом счислении (от 00 до 23);
%I - час в 12-часовом счислении (от 01 до 12);
%j - номер дня в году (от 001 до 366);
%т - номер месяца (от 01 до 12);
М - минуты;
%n - символ перехода на новую строку;
%р - «am» или «рт» (до или после полудня), в зависимости от времени;
%г - время в 12-часовом формате (a.m. или p.m.);
%R - время в 24-часовом формате;
%S - секунды;
%t - символ табуляции;
%Т - текущее время, эквивалентно #H:#M:#S;
%и - число дня в неделе (от 1 до 7), где понедельник - 1;
%11 - номер недели в году (первое воскресенье года считается первым днем первой недели);
%V - номер недели в году по стандарту ISO 8601:1988 (от 01 до 53), где первая неделя - та, в которой насчитывается более 3 дней в текущем году;
%U - номер недели в году, начиная с первого понедельника, как первого дня первой недели;
%w - номер дня в неделе (от 0 до 6). Воскресенье считается нулем;
%х - представление даты в системном формате без указания времени; например, «04/19/01»;
%Х - представление времени в системном формате без указания даты; например, «14:06:26»;
%у - год без цифр века (от 00 до 99);
%Y - полное число года;
%Z - зона времени, имя или сокращение, например «Московское время (лето)»;
%% - символ «%».
setlocale ("LCJIME". "С"): print (strftime ("%/\ in Finnish is ")). setlocale ("LCJIME". "fi_FI"): print (strftime ("3LA. in French ")): setlocale ("LCJIME". "fr_CA"); print (strftime ("$A и in German ")); setlocale ("LCJ-IME". "de_DE"). print (strftime ("ЛАЛп")):
Этот пример будет работать, если ваша система поддерживает соответствующие национальные установки. И не забывайте, не все системы поддерживают весь набор спецификаторов формата.
См. также: setlocale(), mktime() и «Open Group specification of strftime()» (http://www.opengroup.org/onlinepubs/7908799/xsh/strftime.htmL).
gmstrftime
Форматирование локальных времени/даты
string gmstrftime (string format, int timestamp)
Действие функции подобно strftimeO с тем отличием, что возвращается время по Гринвичу (GMT). Например, при запуске в зоне (GMT -0500) первая строка будет следующей: «Dec 31 1998 20:00:00», а вторая: «Jan 01 1999 01:00:00».
setlocale ('LCJIME'. 'en_US').
echo strftime ("%b Ы *Y *H:ZM:ZS". mktime (20.0.0.12 31.98)),"\n' . echo gmstrftime ("*b *d *Y XOM-XS". mktime (20.C.0.12 31.98))."\n";
См. также strftime().
mktime
Преобразование времени в целочисленный формат
int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])
Аргументы функции должны быть указаны в порядке: «час, минута, секунда, месяц, день, год, коррекция_времени>>, что часто путают. Не указывать можно только последний аргумент is_dst (при неуказании большего числа аргументов справа вместо них будут подставляться значения текущего времени). Функция возвращает метку времени «Unix timestamp», соответствующую указанным дате и времени (это целое число секунд, прошедших с 1 января 1970 года).
Аргумент is_dst, указывает, осуществлен ли переход на летнее время (1) или нет (0); если это неизвестно, то аргумент - (-1).
Функция полезна при вычислении дат и их проверке, так как она автоматически корректирует время при неправильном указании временных границ. Например, все следующие строки напечатают: «Jan-01-1998».
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)):
echo date ("M-d-Y". mktime (0.0.0.1.1.98)):
Год может быть указан двумя (0-69 означают 2000-2069 и 70-99 означают 1970-1999) или четырьмя цифрами.
Последний день месяца может быть указан как нулевой следующего (но не как -1). Следующие строки выведут: «Последнее число Февраля 2000: 29».
Slastday - mktime (0.0.0.3.0.2000).
echo strftime ("Последнее число Февраля 2000: И". Slastday).
Slastday - mktime (0 0.0.4.-31.2000):
echo strftime ("Последнее число Февраля
2000: Id", Slastday):
Даты, в которых год, месяц или день равны нулю, считаются недопустимыми (в таком случае, это будет дата: 30.11.1999).
См. также: date ()и tirae().
gmmktime
Аналог функции time для времени GMT
int gmmktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])
Функция подобна mktime(), за исключением того, что передаваемые параметры представляют время по Гринвичу (GMT).
См. также gmdate().
strtotime
Лексическое преобразование строки времени в «UNIX timestamp» int strtotime (string time [, int now])
Функция ожидает получить дату time в англоязычном формате, чтобы преобразовать ее в целочисленный формат «UNIX timestamp».
echo strtotime ("now") . "\n";
echo strtotime ("10 September 2000") "\n";
echo strtotime ("+1 day") . "\n"
echo strtotime ("+1 week") . "\n";
echo strtotime ("+1 week 2 days 4 hours 2 seconds") .
"\n":