Дата и время
В MV дата и время хранятся в полях моделей типа "date" и "date_time". В базе данных, (независимо от вида базы данных) они хранятся в обычном SQL формате вида "yyyy-mm-dd hh:mm:ss". При занесении и извлечении данных и базы необходимо пользоваться специальными методами для приведения значений к нужному формату, при помощи класса "I18n", который также отвечает за интернационализацию и локализацию.
Основной формат даты задан в файле локализации, который находится в папке /adminpanel/i18n/локаль/locale.php. Для русского языка он задан в виде "dd.mm.yyyy".
- formatDate($date [,$format]) - переводит дату из SQL формата (2012-09-15 12:54:23) к текущему формату, заданному в файле локализации, если передать необязательный параметр в виде "only-date", то вернет только дату, а если виде "no-seconds", то секунды будут отброшены. Также формат даты можно передать в виде, аналогичном PHP функции "date()", например "d-m-Y".
- dateForSQL($date) - переводит дату из текущего форматы в SQL формат (2012-09-15 12:54:23), для записи в базу данных.
- getCurrentDate([$sql_format]) - возвращает текущую дату в соответствии с форматом локализации. Если передать необязательные параметр в виде "SQL", то текущая дата будет возвращена в SQL формате.
- getCurrentDateTime([$sql_format]) - возвращает текущую дату и время в соответствии с форматом локализации
- timestampToDate($timestamp) - переводит временную метку в дату в соответствии с форматом локализации.
- getMonth($number) - возвращает название месяца по его номеру, например "Февраль", "Март"
- getMonthCase($number) - возвращает название месяца в родительном падеже, например "Февраля", "Марта"
- getWeekDayName($date) - возвращает название дня недели, например "Вторник", "Четверг"
Примеры
//Находим новость по id $record = $mv -> news -> findRecordById(32); //Выводим дату, преобразовывая SQL формат echo I18n :: formatDate($record -> date); //Форматируем дату echo I18n :: formatDate($record -> date, "d/m/Y")); //Выводим дату и время без секунд echo I18n :: formatDate($record -> date, "no-seconds"); //Выводим только дату echo I18n :: formatDate($record -> date, "only-date"); //Выводим день недели echo I18n :: getWeekDayName($record -> date); //Передаем в запись новости текущую дату $record -> date = I18n :: getCurrentDateTime(); $record -> update(); //Передаем в запись новости текущую дату через объект модели (сохраним историю изменений) $news -> read(47) -> setValue("date", I18n :: getCurrentDateTime()) -> update(); //Подсчет количества новостей за текущий день $number = $news -> countRecords(array("date" => I18n :: getCurrentDate("SQL"))); //Перевод даты из SQL к виду "12 ноября 2011" public function formatDate($date) { $date = explode("-", $date); return $date[2]." ".I18n :: getMonthCase(intval($date[1]))." ".$date[0]; }
Предыдущий раздел
Файлы и изображения