Работа с датой и временем
Описание
Вся работа с датами через API (вставки, выборки, фильтры и т.п.) производится в формате текущего сайта или, если в администартивной части, в формате текущего языка.
Для работы с датой и временем используются следующие функции:
- CDatabase::CharToDateFunction
- CDatabase::DateToCharFunction
- CDatabase::CurrentDateFunction
- CDatabase::CurrentTimeFunction
- CDataBase::DateFormatToPHP
- CDataBase::DatetimeToTimestampFunction
- CDataBase::FormatDate
- ConvertDateTime
- MakeTimeStamp
- ConvertTimeStamp
- CDataBase::IsDate
- CDataBase::CompareDates
- AddToTimeStamp
- ParseDateTime
- getmicrotime
- GetTimeFormat
- GetDateFormat
При задании формата даты и времени используются следующие обозначения:
- 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__."
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-2024, «1С-Битрикс», 2024