V. Développer avec PHPBoost

Traitement des dates

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Dernière mise à jour : 12/02/2016 à 08h47
PHPBoost possède une classe permettant d'effectuer plusieurs traitements sur les dates. Nous allons vous la présenter au cours de cet article.

La classe va vous permettre de formater une date dans différents référentiels horaires et de récupérer plusieurs informations dessus.

Les référentiels temporels




Dans un monde internationnal tel qu'Internet, des gens de toutes les nationnalités et de tous les pays se retrouvent sur un même site, donc le serveur peut être basé n'importe où. Il est donc important d'adapter les dates à l'utilisateur (et notamment à son fuseau horaire). Cette classe gère aussi le changement d'heure (heure d'été/ heure d'hiver).

Les différents référentiels




La classe Date gère la notion de fuseau horaire à partir de différents référentiels qui sont les suivants :

  • L'heure système (ou l'heure du serveur). Toutes les données manipulées par l'application doivent être en heure système. En interne, la classe Date manipule le temps selon le référentiel du système, et tout enregistrement dans la base de données ou dans un fichier quelconque doit se faire dans ce référentiel. Cela permet d'avoir des données homogènes. Ce fuseau horaire est donné automatiquement par le serveur.
  • L'heure du site. Elle est dans le fuseau horaire de l'endroit où est localisé le site. Par exemple un site français sera à l'heure française, c'est à dire en GMT + 1 en hiver. Cette référence sera par ailleurs utilisée pour les invités (visiteurs non enregistrés). Le fuseau horaire du site est choisi par l'administrateur.
  • L'heure de l'utilisateur. Chaque utilisateur enregistré choisit son fuseau horaire, les autres auront le référentiel par défaut, à savoir celui du site.


Quel référentiel utiliser ?




Voilà ce qu'il est important de retenir.

L'affichage d'une date se fait quasiment systématiquement dans le référentiel utilisateur. Lorsque l'utilisateur entre une date, elle sera aussi dans son propre référentiel.

L'enregistrement dans la base de données ou dans un fichier texte se fait dans le référentiel système.

Toute date doit être enregistrée dans le référentiel système, c'est le seul référentiel qu'ont en commun tous les utilisateurs et qui fournira donc une heure équivalente à chacun d'entre eux. Il est impératif de respecter cette règle.

Initialiser la classe




Selon vos besoins, vous allez avoir besoin de la date actuelle ou d'utiliser une date formatée ou non. Nous allons voir dans ces exemples les différentes manières d'utiliser la classe Date.

Date actuelle




Code PHP :
$date = new Date();
$date = new Date(DATE_NOW);


Les deux codes si dessus se valent et vont initialiser la classe avec la date et l'heure actuelle.

Année, mois, jour




Code PHP :
$date = new Date(DATE_YEAR_MONTH_DAY, TIMEZONE_SYSTEM, 2012, 11, 03);


- Le premier paramètre
DATE_YEAR_MONTH_DAY


spécifie que vous souhaitez donner l'année, le mois et le jour.

- Le deuxième paramètre et le timezone, vous pouvez utiliser le timezone (décalage horaire) du serveur, de l'utilisateur ou celui de la configuration du site. Les valeurs sont :
TIMEZONE_SITE, TIMEZONE_SYSTEM, TIMEZONE_USER


- Les trois autres paramètres sont l'année, le mois et le jour.

Année, mois, jour, heure, minutes, secondes




Code PHP :
$date = new Date(DATE_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, TIMEZONE_SYSTEM, 2012, 11, 03, 12, 9, 24);


-
DATE_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
permet de spécifier le formatage Année, mois, jour, heure, minutes et secondes.

- Le deuxième paramètre et le timezone, vous pouvez utiliser le timezone (décalage horaire) du serveur, de l'utilisateur ou celui de la configuration du site. Les valeurs sont :
TIMEZONE_SITE, TIMEZONE_SYSTEM, TIMEZONE_USER


- Les six autres paramètres sont l'année, le mois, le jour, l'heure, les minutes et les secondes.

Timestamp




Code PHP :
$date = new Date(DATE_TIMESTAMP, TIMEZONE_SYSTEM, 100000);


- Le premier paramètre
DATE_TIMESTAMP


spécifie que vous souhaitez utiliser une timestamp.

- Le deuxième paramètre est le timezone, vous pouvez utiliser le timezone (décalage horaire) du serveur, de l'utilisateur ou celui de la configuration du site. Les valeurs sont :
TIMEZONE_SITE, TIMEZONE_SYSTEM, TIMEZONE_USER


- Le troisième paramètre est la valeur du timestamp.

Chaîne de caractère




Code PHP :
$date = new Date(DATE_FROM_STRING, TIMEZONE_SYSTEM, '10/17/2009', 'm/d/y');


- Le premier paramètre
DATE_FROM_STRING


spécifie que vous souhaitez utiliser chaîne de caractère avec un type de formatage.

- Le deuxième paramètre est le timezone, vous pouvez utiliser le timezone (décalage horaire) du serveur, de l'utilisateur ou celui de la configuration du site. Les valeurs sont :
TIMEZONE_SITE, TIMEZONE_SYSTEM, TIMEZONE_USER


- Le troisième paramètre est la valeur de la date

- Le quatrième paramètre est le type de formatage

Traitement sur l'objet Date




Vous pouvez, après avoir instancié la classe date, utiliser plusieurs fonctions pour obtenir divers renseignements :

Obtenir le timestamp




Code PHP :
$date->get_timestamp();


Obtenir l'année de la date




Code PHP :
$date->get_year();


Obtenir le mois de la date




Code PHP :
$date->get_month();


Obtenir le jour de la date




Code PHP :
$date->get_day();


Obtenir l'heure de la date




Code PHP :
$date->get_hours();


Obtenir les minutes de la date




Code PHP :
$date->get_minutes();


Obtenir les secondes de la date




Code PHP :
$date->get_seconds();


Exporter sous format année-mois-jour




Code PHP :
$date->to_date();


Vérifier si la date est antérieure à une autre date




Code PHP :
$date->is_anterior_to(Date $date);


Vérifier si la date est postérieure à une autre date




Code PHP :
$date->is_posterior_to(Date $date);


Vérifier si la date est égale à une autre date




Code PHP :
$date->equals(Date $date);


Modifier les données d'une date après sa création




Vous pouvez, après création de l'objet, modifier la date, son jour, l'année, l'heure, etc :

Code PHP :
$date->set_year($year); // Change l'année
$date->set_month($month); // Change le mois
$date->set_day($day); // Change le jour
$date->set_hours($hours): // Change l'heure
$date->set_minutes($minutes); // Change les minutes
$date->set_seconds($second); // Change les secondes