Документация для разработчиков

Работа с датой и временем

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

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

При задании формата даты и времени используются следующие обозначения:

  • YYYY - год
  • MM - месяц
  • DD - день
  • HH - часы
  • MI - минуты
  • SS - секунды

С версии 11.5.4 главного модуля включена поддержка 12-часового формата времени и некоторые новые отображения месяца:

  • MMMM - полный месяц (использовать только для вывода);
  • M - первые 3 буквы месяца;
  • G - час от 1-12 (без ведущего нуля);
  • GG - 0-23 (без ведущего нуля);
  • H - 01-12;
  • HH - 00-23;
  • TT - отображением AM/PM (верхний регистр);
  • T - am/pm.
Новые форматы месяца и часа:

Методы используемые в SQL запросах

  • CDatabase::CharToDateFunction - возвращает SQL код для преобразования строки во время формата базы данных.

    <?
    $strSql = "
        SELECT 
            ID
        FROM 
            my_table
        WHERE 
            DATE_CREATE <= ".$DB->CharToDateFunction("10.01.2003 23:59:59")."
        ";
    $rs = $DB->Query($strSql, false, $err_mess.__LINE__);
    ?>

  • CDatabase::DateToCharFunction - возвращает SQL код для преобразования время из формата базы данных в строку.

    <?
    $strSql = "
        SELECT 
            ID, 
            ".$DB->DateToCharFunction("DATE_CREATE")." DATE_CREATE 
        FROM 
            my_table
        ";
    $rs = $DB->Query($strSql, false, $err_mess.__LINE__);
    ?>

  • CDatabase::CurrentDateFunction - возвращает SQL код для получения текущей даты.

    <?
    $strSql = "
        SELECT 
            ID 
        FROM 
            my_table 
        WHERE 
            DATE_CREATE<=".$DB->CurrentDateFunction()
        ";
    $rs = $DB->Query($strSql, false, $err_mess.__LINE__);
    ?>

  • CDatabase::CurrentTimeFunction - возвращает SQL код для получения текущего времени в формате базы данных.

    <?
    $strSql = "
        UPDATE my_table SET 
             TIME_CHANGE=".$DB->CurrentTimeFunction()."
        WHERE 
             ID=45
        ";
    $Query($strSql, false, "FILE: ".__FILE__."<br>LINE: ".__LINE__);
    ?>

  • CDatabase::DatetimeToTimestampFunction - возвращает валидный timestamp без обращения к MakeTimeStamp.

    <?
    $strSql = "
        SELECT 
             ID, 
             ".$DB-> DatetimeToTimestampFunction("DATE_CREATE")." DATE_CREATE
        FROM 
             my_table
        ";
    $rs = $DB->Query($strSql, false, $err_mess.__LINE__);
    ?>

Конвертация форматов

  • CDataBase::DateFormatToPHP - конвертирует формат допустимый в настройках сайта в формат принятый в PHP.

    <?
    echo $DB->DateFormatToPHP("DD.MM.YYYY HH:MI:SS"); // d.m.Y H:i:s
    ?>

  • CDataBase::FormatDate - конвертирует время из строки одного формата в строку произвольного формата.

    <?
    echo $DB->FormatDate("31.12.2005", "DD.MM.YYYY", "YYYY-MM-DD"); // 2005-12-31
    ?>

  • ConvertDateTime - конвертирует время из строки в формате сайта в строку произвольного формата.

    <?
    echo ConvertDateTime("25.12.2003", "YYYY-MM-DD", "ru"); // 2003-12-25
    ?>

  • MakeTimeStamp - конвертирует время из строки в Unix-формат.

    <?
    echo MakeTimeStamp("07.04.2005 11:32:00", "DD.MM.YYYY HH:MI:SS"); // 1112862720
    ?>

  • ConvertTimeStamp - конвертирует время из Unix-формата в строку в формате сайта.

    <?
    echo ConvertTimeStamp(mktime(0, 0, 0, 10, 25, 2003), "SHORT", "ru"); // 25.10.2003
    ?>

Дополнительные функции

  • CDataBase::IsDate - проверяет дату заданную в виде строки на корректность.

    <?
    echo $DB->IsDate("12.10.2005 22:34:15", "DD.MM.YYYY HH:MI:SS") ? "OK" : "ERROR"; // OK
    echo $DB->IsDate("12.13.2005 22:34:15", "DD.MM.YYYY HH:MI:SS") ? "OK" : "ERROR"; // ERROR
    echo $DB->IsDate("12.13..2005 ABS", "DD.MM.YYYY HH:MI:SS") ? "OK" : "ERROR"; // ERROR
    ?>

  • CDataBase::CompareDates - сравнивает между собой две даты заданные как строки.

    <?
    echo $DB->CompareDates("01.01.2005", "01.01.2006"); // -1
    echo $DB->CompareDates("01.01.2006", "01.01.2005"); // 1
    echo $DB->CompareDates("01.01.2006", "01.01.2006"); // 0
    ?>

  • AddToTimeStamp - добавляет к дате в Unix-формате заданный интервал времени.

    <?
    $stmp = MakeTimeStamp("07.04.2005 11:32:00", "DD.MM.YYYY HH:MI:SS");
    $stmp = AddToTimeStamp(array("DD" => -1, "MM" => 1), $stmp); // 1115454720
    echo date("d.m.Y H:i:s", $stmp); // 06.05.2005 11:32:00
    ?>

  • ParseDateTime - возвращает ассоциированный массив описывающий дату заданную в виде строки.

    <?
    if ($arr = ParseDateTime("21.01.2004 23:44:15", "DD.MM.YYYY HH:MI:SS"))
    {
        echo "День:    ".$arr["DD"]."<br>";    // День: 21
        echo "Месяц:   ".$arr["MM"]."<br>";    // Месяц: 1
        echo "Год:     ".$arr["YYYY"]."<br>";  // Год: 2004
        echo "Часы:    ".$arr["HH"]."<br>";    // Часы: 23
        echo "Минуты:  ".$arr["MI"]."<br>";    // Минуты: 44
        echo "Секунды: ".$arr["SS"]."<br>";    // Секунды: 15
    }
    else echo "Ошибка!";
    ?>

  • getmicrotime - возвращает текущее время в Unix-формате.

    <?
    echo getmicrotime(); // 1115454720
    ?>

  • GetDateFormat - Возвращает формат даты (времени) сайта.

    <?
    // выводит текущую дату в формате текущего сайта
    echo date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), time());
    ?>

  • GetTimeFormat - Возвращает формат времени, указанный в настройках сайта.

    <?
    echo $GLOBALS["DB"]->DateFormatToPHP( CSite::GetTimeFormat() );
    ?>



© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх