====== DateTool class ====== Cette classe contient un ensemble de méthodes statiques permettant de manipuler des dates. ===== Méthodes principales ===== **set_current_locale($locale)** >Configure la locale PHP de l'application et la langue de l'application CakePHP >Une fois configurée la locale indiquée est utilisée par défaut pas plusieurs fonctions de la classe //DateTool//. >Pour le français et l'anglais, essaie de trouver la bonne locale à utiliser, en fonction des locales configurées sur le serveur. DateTool :: set_current_locale('fr'); /* * -> may have set locale to 'fr_CH.UTF-8', 'fr_CH', 'fr_FR.UTF-8' or 'fr_FR' * depending on the locale installed on the server */ **get_current_locale()** >Retourne la locale actuelle DateTool :: get_current_locale(); // 'fr_CH.UTF-8' **sql_to_date($sql_date, $locale = null, $with_time = true)** >Formatte une date ou un datetime //SQL// dans la locale de l'application. >A utiliser notamment pour afficher les dates dans les vues. >//$locale//: >>par défaut, la locale courante de PHP, ou la locale settée précédement par //DateTool::set_current_locale($locale)// DateTool :: set_current_locale('fr'); DateTool :: sql_to_date('2010-08-01'); // '01.08.2010' DateTool :: sql_to_date('2010-08-01 13:34:10'); // '01.08.2010 13:34:10' **date_to_sql($date, $locale = null, $with_time = true)** >Permet d'obtenir une date //SQL// à partir d'une date formattée dans une autre locale. >A utiliser notamment avant de sauver des champs dates dont les valeurs proviennent des vues. >//$locale//: >>par défaut, la locale courante de PHP, ou la locale settée précédement par //DateTool::set_current_locale($locale)// DateTool :: set_current_locale('fr'); DateTool :: date_to_sql('01.08.2010'); // '2010-08-01' DateTool :: date_to_sql('01.08.2010 13:34:10'); // '2010-08-01 13:34:10' **format_date_interval($dateStr, $separator = ' - ', $locale = null)** >Formatte un intervalle de dates au format //SQL// dans la locale donnée >//$locale//: >>par défaut, la locale courante de PHP, ou la locale settée précédement par //DateTool::set_current_locale($locale)// DateTool :: set_current_locale('fr'); DateTool :: format_date_interval('2010-08-01 - 2010-08-05'); // '01.08.2010 - 05.08.2010' DateTool :: format_date_interval('2010-08-01 13:00:17 - 2010-08-05 08:20:00') // '01.08.2010 13:00:17 - 05.08.2010 08:20:00' **sql_to_datetime($sql_date, $locale = null)** >Formatte un datetime //SQL// (//2010-08-01 13:34:10//) dans la locale de l'application (ex: //01.08.2010 13:34:10//). >A noter que la fonction //sql_to_date// détecte automatiquement la présence d'une heure et appelle cette fonction le cas échéant. DateTool :: set_current_locale('fr'); DateTool :: sql_to_datetime('2010-08-01 13:34:10'); // '01.08.2010 13:34:10' DateTool :: sql_to_datetime('2010-08-01'); // '01.08.2010 00:00:00' **datetime_to_sql($date, $locale = null, $force_datetime = false)** >Permet d'obtenir un datetime //SQL// à partir d'un datetime formatté dans une autre locale. DateTool :: set_current_locale('fr'); DateTool :: datetime_to_sql('01.08.2010 13:34:10'); // '2010-08-01 13:34:10' DateTool :: datetime_to_sql('01.08.2010 00:00:00'); // '2010-08-01 00:00:00' **get_current_datetime($locale = null)** >Permet d'obtenir la date et l'heure courante dans la locale souhaitée >//$locale//: >>par défaut, la locale courante de PHP, ou la locale settée précédement par //DateTool::set_current_locale($locale)// DateTool :: set_current_locale('fr'); DateTool :: get_current_datetime(); // '01.08.2010 13:34:10' **get_complete_time($timeStr)** >Retourne une heure complétée avec les minutes et les secondes DateTool :: get_complete_time('3'); // '03:00:00' DateTool :: get_complete_time('16:35'); // '16:35:00' DateTool :: get_complete_time('16:35:34'); // '16:35:34' **get_complete_datetime($timeStr)** >Identique à //get_complete_time($timeStr)//, mais pour gérer les datetimes **get_complete_year($year)** >Retourne une date complétée DateTool :: get_complete_year(85); // 1985 DateTool :: get_complete_year(16); // 2016 **get_time_from_hour($hour)** >Retourne une durée à partir d'un nombre d'heure DateTool :: get_time_from_hour(8); // '08:00' **get_hour_as_float($time_string)** >Retourne un nombre représentant le nombre d'heure du string passé DateTool :: get_hour_as_float('08:15'); // 8.25 **get_time_array($start_hour, $end_hour, $step_hour, $minimum_hour = null, $maximum_hour = null, $locale = null)** >Retourne un tableau contenant des datetimes pouvant être utilisés par exemple dans un calendrier $hours = DateTool :: get_time_array(8, 10, 0.25); /* Array ( [0] => 08:00 [1] => 08:15 [2] => 08:30 [3] => 08:45 [4] => 09:00 [5] => 09:15 [6] => 09:30 [7] => 09:45 ) */ **compare_dates($date1, $date2, $locale = null)** >Retourne un caractère indiquant si la première date est plus petite, plus grande ou identique à la seconde >Les dates doivent être passées dans la locale indiquées ou la locale courante. DateTool :: set_current_locale('fr'); DateTool::compare_dates('01.08.2010', '01.08.2010'); // = DateTool::compare_dates('01.08.2010', '02.08.2010'); // < DateTool::compare_dates('02.08.2010', '01.08.2010'); // > DateTool::compare_dates('01.08.2010 14:00:01', '01.08.2010 14:00:00'); // > **datetime_is_in_interval($start_datetime, $end_datetime, $datetime_to_check = null, $locale = 'sql')** >Retourne un boolean indiquant si un datetime est compris entre deux datetimes donnés DateTool :: datetime_is_in_interval('2010-08-01 13:30:00', '2010-08-01 13:50:00', '2010-08-01 13:45:00'); // true DateTool :: datetime_is_in_interval('2010-08-01 13:30:00', '2010-08-01 13:50:00', '2010-08-01 13:55:00'); // false DateTool :: datetime_is_in_interval('2010-08-01', '2010-08-03', '2010-08-02'); // true DateTool :: datetime_is_in_interval('2010-08-01', '2010-08-02', '2010-08-03'); // false