Date and time

In MV date and time are stored in model fields of "date" and "date_time" types. In a database, (no matter the type of a database) they are stored in a normal SQL format of "yyyy-mm-dd hh:mm:ss". During inserting and extracting data from a database you need to use special methods for adjust values to the necessary format, by using class "I18n" which is also responsible for internationalization and localization.

The main format of date is specified in the file of localization which is located in "/adminpanel/i18n/your_locale/locale.php" file.

  • formatDate($date [, $format]) - transforms the date from SQL format (2012-09-15 12:54:23) to the current format, specified in localization file, if you pass an optional parameter in the form of "only-date", it will return only date, and if you pass "no-seconds", seconds will be removed. Also the date format can be passed in the format similar to PHP "date()" function, for example "d-m-Y"
  • dateForSQL($date) - transforms the date current format into SQL format (2012-09-15 12:54:23), to insert into a database
  • getCurrentDate([$sql_format]) - returns the current date according to a localization format. If you pass an optional parameter in the form of "SQL", the current date will be returned in SQL format
  • getCurrentDateTime([$sql_format]) - returns the current date and time according to a localization format
  • timestampToDate($timestamp) - transforms a temporary tag into date according to a localization format
  • getMonth($number) - returns the name of the month by it's number, for example "February", "March".
  • getMonthCase($number) ) - returns the name of the month in a genitive case, for languages other that English, for example "February", "March".

Samples

//Find news record by id  
$record = $mv -> news -> findRecordById(32);

//Display date, transforming from SQL format
echo I18n :: formatDate($record -> date);
 
//Special format of date
echo I18n :: formatDate($record -> date, "d/m/Y"));

//Display date and time withut seconds 
echo I18n :: formatDate($record -> date, "no-seconds");
 
//Display only date 
echo I18n :: formatDate($record -> date, "only-date");
 
//Pass the current date into news record 
$record -> date = I18n :: getCurrentDateTime();
$record -> update();
 
//Pass the current date into news record via model object (saving changes history)
$news -> read(47) -> setValue("date", I18n :: getCurrentDateTime()) -> update();

//Count the number of news for current date
$number = $news -> countRecords(array("date" => I18n :: getCurrentDate("SQL")));

//Transform date from SQL into "12 November 2011"
public function formatDate($date)
{
    $date = explode("-", $date);
    return $date[2]." ".I18n :: getMonthCase(intval($date[1]))." ".$date[0];
}