Дата и время в PHP

PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:

  • time( ) - возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX).
  • getdate( ) - считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:
    secondsСекунды (0-59)
    minutesМинуты (0-59)
    hoursЧасы (0-23)
    mdayДень месяца (1-31)
    wdayДень недели (0-6), начиная с воскресенья
    monМесяц (1-12)
    yearГод
    ydayДень года (0-365)
    weekdayНазвание дня недели (например, Friday)
    monthНазвание месяца (например, January)
    0Абсолютное время

    Пример 1

    <html>
    <head>
    <title>Использование getdate()</title>
    </head>
    <body>
    $d = getdate(); // использовано текущее время
    foreach ( $d as $key => $val )
    echo "$key = $val
    ";
    echo "Сегодня: $d[mday].$d[mon].$d[year]";
    ?>
    </body>
    </html>

    РЕЗУЛЬТАТ ПРИМЕРА 1:
    seconds = 21
  • minutes = 4
    hours = 12
    mday = 10
    wday = 4
    mon = 11
    year = 2005
    yday = 313
    weekday = Thursday
    month = November
    0 = 1131613461
    Сегодня: 10.11.2005



  • date( ) - форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:
    aВключено обозначение "am" или "pm"
    AВключено обозначение "AM" или "PM"
    dДень месяца (01-31)
    DСокращенное название дня недели (три буквы)
    FПолное название месяца
    gЧасы (12-часовой формат без ведущих нулей)
    GЧасы (24-часовой формат без ведущих нулей)
    hЧасы (12-часовой формат)
    HЧасы (24-часовой формат)
    iМинуты (00-59)
    jДень месяца без ведущих нулей (1-31)
    lПолное название дня недели
    LПризнак високосного года (0 или 1)
    mМесяц (01-12)
    MСокращенное название месяца (три буквы)
    nМесяц (1-12)
    sСекунды (00-59)
    tКоличество дней в данном месяце (от 28 до 31)
    UАбсолютное время
    wНомер дня недели (0 - воскресенье, 6 - суббота)
    yГод (два разряда)
    YГод (четыре разряда)
    zДень года (0-365)
    ZСмещение часового пояса в секундах (от -43200 до 43200)

    Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту "". Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку "n", то надо ввести " ", поскольку " " является символом новой строки.

    Пример 2

    <html>
    <head>
    <title>Использование date()</title>
    </head>
    <body>
    echo date( "Сегодня d.m.y H:i" );
    ?>
    </body>
    </html>

    РЕЗУЛЬТАТ ПРИМЕРА 2:
    Сегодня: 10.11.05 13:03

  • mktime( ) - возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate(). Принимает до шести целочисленных аргументов в следующем порядке:

    часы
    минуты
    секунды
    месяц
    день месяца
    год

    Пример 3

    <html>
    <head>
    <title>Использование mktime()</title>
    </head>
    <body>
    echo date( "j of F Y, a\t g.i a, l", mktime( 13, 30, 0, 1, 22, 1971 ) );
    ?>
    </body>
    </html>
    РЕЗУЛЬТАТ ПРИМЕРА 3:
    22 of January 1971, at 1.30 pm, Friday

  • checkdate( ) - проверка правильности даты. Аргументы: месяц, день, год. Возвращает true, если дата правильная, т.е.
    месяц - целое число от 1 до 12;
    день - целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
    год - целое число от 1 до 32767.

    Например:

    if ( !checkdate( $month, 1, $year ) )
    {
    $d = getdate();
    $month = $d[mon];
    $year = $d[year];
    }

    Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.

  • strftime( ) - формирование локальной даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate( ) Строка формата может содержать следующие коды:
    %aСокращенное название дня недели
    %AПолное название дня недели
    %bСокращенное название месяца
    %BПолное название месяца
    %cПредпочтительный формат даты и времени
    %CНомер века
    %dДень месяца (1-31)
    %DТо же, что и %m/%d/%y
    %eМесяц (1-12)
    %hТо же, что и %b
    %HЧасы (24-часовой формат)
    %IЧасы (12-часовой формат)
    %jДень года (0-365)
    %mМесяц (1-12)
    %MМинуты
    %nСимвол новой строки
    %pВключено обозначение "am" или "pm"
    %rВремя с использованием a.m./p.m.-нотации
    %RВремя в 24-часовом формате
    %SСекунды (00-59)
    %tСимвол табуляции
    %TТо же, что и %H:%M:%S
    %uНомер дня недели (1 - понедельник, 7 - воскресенье)
    %UНомер недели. Отсчет начинается с первого воскресенья года
    %VНомер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
    %WНомер недели. Отсчет начинается с первого понедельника года
    %wНомер дня недели (0 - воскресенье, 6 - суббота)
    %xПредпочтительный формат даты без времени
    %XПредпочтительный формат времени без даты
    %yГод (два разряда)
    %YГод (четыре разряда)
    %ZЧасовой пояс (имя или сокращение)
    %%Символ "%"

    Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.

    Пример 4

    <html>
    <head>
    <title>Использование strftime()</title>
    </head>
    <body>
    echo strftime("%A %d %B %Y %H:%M
    ");
    error_reporting(E_ALL & ~E_WARNING);
    setlocale('LC_ALL','');
    echo strftime("Сегодня %A %d %B %Y %X
    ");
    echo strftime("%Z
    ");
    ?>
    </body>
    </html>
    РЕЗУЛЬТАТ ПРИМЕРА 4:
    Tuesday 15 November 2005 13:11 Сегодня вторник 15 Ноябрь 2005 13:11:14 Московское время (зима)

  • Еще примеры:

    date("l dS of F Y h:i:s A") :
    Saturday 25th 2009f July 2009 01:22:24 PM

    date("Сегодня d.m.Y") :
    Сегодня 25.07.2009

    date("Этот файл датирован d.m.Y", filectime(__FILE__)) :
    Этот файл датирован 15.02.2009

    // Активизируем текущую локаль (иначе дата будет на английском).
    setlocale(LC_ALL, '');
    // Выводим 2 предложения.
    echo strftime("%B %Y года, %d число.
    Был %A, часы показывали %H:%M.");
    July 2009 года, 25 число. Был Saturday, часы показывали 13:22.

    Очень интересное решение по нахождению вчерашнего дня написал Bermuda с PHP Club:
    $time = strtotime("-1 day");
    $fecha = date("Y-m-d", $time);


    Источник: http://www.srubil.ru
    Категория: PHP & MySQL | Добавил: kotenok1343 (06.03.2010)
    Просмотров: 442 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]