Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
tips_informatiques:programmation:php:plugin_alaxos:librairie:datetool [2010/08/24 21:47] nico créée |
tips_informatiques:programmation:php:plugin_alaxos:librairie:datetool [2010/08/24 00:00] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== DateTool ====== | + | ====== 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. | ||
+ | |||
+ | <code php> | ||
+ | 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 | ||
+ | */ | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **get_current_locale()** | ||
+ | |||
+ | >Retourne la locale actuelle | ||
+ | |||
+ | <code php> | ||
+ | DateTool :: get_current_locale(); // 'fr_CH.UTF-8' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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)// | ||
+ | |||
+ | <code php> | ||
+ | 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' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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)// | ||
+ | |||
+ | <code php> | ||
+ | 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' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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)// | ||
+ | |||
+ | <code php> | ||
+ | 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' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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. | ||
+ | |||
+ | <code php> | ||
+ | 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' | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **datetime_to_sql($date, $locale = null, $force_datetime = false)** | ||
+ | |||
+ | >Permet d'obtenir un datetime //SQL// à partir d'un datetime formatté dans une autre locale. | ||
+ | |||
+ | <code php> | ||
+ | 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' | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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)// | ||
+ | |||
+ | <code php> | ||
+ | DateTool :: set_current_locale('fr'); | ||
+ | |||
+ | DateTool :: get_current_datetime(); // '01.08.2010 13:34:10' | ||
+ | </code> | ||
+ | |||
+ | **get_complete_time($timeStr)** | ||
+ | |||
+ | >Retourne une heure complétée avec les minutes et les secondes | ||
+ | |||
+ | <code php> | ||
+ | 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' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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 | ||
+ | |||
+ | <code php> | ||
+ | DateTool :: get_complete_year(85); // 1985 | ||
+ | DateTool :: get_complete_year(16); // 2016 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **get_time_from_hour($hour)** | ||
+ | |||
+ | >Retourne une durée à partir d'un nombre d'heure | ||
+ | |||
+ | <code php> | ||
+ | DateTool :: get_time_from_hour(8); // '08:00' | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **get_hour_as_float($time_string)** | ||
+ | |||
+ | >Retourne un nombre représentant le nombre d'heure du string passé | ||
+ | |||
+ | <code php> | ||
+ | DateTool :: get_hour_as_float('08:15'); // 8.25 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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 | ||
+ | |||
+ | <code php> | ||
+ | $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 | ||
+ | ) | ||
+ | */ | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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. | ||
+ | |||
+ | <code php> | ||
+ | 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'); // > | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | **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 | ||
+ | |||
+ | <code php> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||