Справочник по PHP

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


 

checkdate

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

Синтаксис :

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

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

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

- год между 1 и 32767 включительно

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

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

$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 или текущее локальное время, если не задана временная метка.

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

  •   a - "до" и "после" полудня: "am" или "pm"
  •   A - "До" и "После" полудня: "AM" или "PM"
  •   d - день месяца, 2 цифры (на первом месте ноль) (от 01 до 31)
  •   D - день недели, текстовый, 3 буквы; т.е. "Fri"
  •   j - день месяца, 1-2 цифры без начальных нулей (от 1 до 31)
  •   F - месяц, текстовый, длинный; т.е. "January"
  •   h - час, 12-часовой формат (от 01 до 12)
  •   H - час, 24-часовой формат (от 00 до 23)
  •   g - час, 12-часовой формат без нулей (от 1 до 12)
  •   G - час, 24-часовой формат без нулей (от 0 до 23)
  •   i - минуты (от 00 до 59)
  •   I(большая i) - 1, если действует переход на летнее время, иначе 0
  •   L - 0, если год не високосный, или 1 в противном случае
  •   B - Swatch Internet time
  •   T - временная зона компьютера, например: MDT (доступна не всегда)

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


  •   m - месяц, две цифры с нулями (от 01 до 12)


  •   n - месяц, одна-две цифры без нулей (от 1 до 12)


  •   M - трехбуквенное английское сокращение месяца; т.е. "Jan"


  •   t - число дней в указанном месяце (от 28 до 31)


  •   s - секунды (от 0 до 59)


  •   S - англоязычный порядковый суффикс числа из двух букв, текстовый, т.е. "th", "nd"


  •   U - целое число секунд, прошедших с момента начала эпохи UNIX (доступно не всегда)


  •   Y - год, цифровой, 4 цифры (1999)


  •   y - год, цифровой, 2 цифры (99)


  •   w - порядковое число дня в неделе,(от 0-воскресенье до 6-суббота)


  •   z - порядковое число дня в году (от 0 до 365)


  •   Z - смешение временной зоны в секунадах (от -43200 до 43200)


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

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

    echo date("Сегодня d.m.Y");//Сегодня 31.01.2002echo date( "l dS of F Y h:i:s A" );// Thursday 31st of January 2002 12:51:19 PMecho "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. В случае, если он не указан, то используется текущее время.

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

    •   ([1])"tm_sec" - секунды




    •   ([2])"tm_min" - минуты


    •   ([3])"tm_hours" - часы


    •   ([4])"tm_mday" - день месяца


    •   ([5])"tm_mon" - месяц в году


    •   ([6])"tm_year" - год, цифровой


    •   ([7])"tm_wday" - день недели


    •   ([8])"tm_yday" - день в году


    •   ([9])"tm_isdst" - активен ли переход на летнее время


    • gettimeofday

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

      Синтаксис :

      array gettimeofday();

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

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

      •   "sec" - секунды


      •   "usec" - микросекунды


      •   "minuteswest" - смещение к западу от Гринвича, в минутах


      •   "dsttime" - тип dst коррекции (переход на летнее время)


      • strftime

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

        Синтаксис :

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

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

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

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

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

        •   %a - сокращенное название дня недели по умолчанию (Wed);


        •   %A - полное название дня недели по умолчанию (Wednesday);


        •   %b - сокращенное название месяца по умолчанию (Apr);


        •   %B - полное название месяца по умолчанию (April);


        •   %c - предпочтительное представление даты и времени (06/19/02 15:45:11);


        •   %C - номер века (год, деленный на 100 и без дробной части, от 00 до 99);


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


        •   %D - эквивалент %m/%d/%y;


        •   %e - число месяца (вместо незначащего нуля ставится пробел) (от 1 до 31);


        •   %h - аналог %b;


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




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


        •   %j - номер дня в году как десятичное число (в диапазоне от 001 до 366);


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


        •   %M - минуты как десятичное число;


        •   %n - символ перехода на новую строку;


        •   %p - "am" или "pm" (до и после полудня) согласно текущему времени;


        •   %r - время в 12-часовом формате (a.m. или p.m.);


        •   %R - время в 24-часовом формате;


        •   %S - секунды как десятичное число;


        •   %t - символ табуляции;


        •   %T - текущее время, эквивалентно %H:%M:$S;


        •   %u - число дня в неделе (от 1 до 7) (понедельник - 1);


        •   %U - номер недели в году как десятичное число, начиная с первого Воскресенья в качестве первого дня первой недели;


        •   %V - номер недели в году по стандарту ISO 8601:1988 (от 1 до 53), где первая неделя - та, в которой насчитывается больше 3-х дней в текущем году;


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


        •   %w - номер дня в неделе (от 0 до 6) (воскресенье - 0);


        •   %x - представление даты в системном формате без указания времени (06/13/02);


        •   %X - представление времени в системном формате без указания даты (15:34:54);


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


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


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


        •   %% - символ "%".


        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);

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

        •   "seconds" - секунды




        •   "minutes" - минуты


        •   "hours" - часы


        •   "mday" - день месяца


        •   "wday" - день недели, цифровой


        •   "mon" - месяц, цифровой


        •   "year" - год, цифровой


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


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


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


        •   0 - "UNIX 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";


        Содержание раздела