Traitement des dates

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 :



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'initialiser la classe avec un timestamp.

Date actuelle




Code PHP :
$date = new Date();


Le code ci-dessus va initialiser la classe avec la date et l'heure actuelle.

Timestamp




Code PHP :
$date = new Date($timestamp, Timezone::TIMEZONE_SYSTEM);


- Le premier paramètre
$timestamp
spécifie le timestamp de la date.

- 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::TIMEZONE_SITE, Timezone::TIMEZONE_SYSTEM, Timezone::TIMEZONE_USER


Affichage de la date


La date peut être affichée selon différents formats :



Exemple :

Code PHP :
echo $date->format(Date::FORMAT_DAY_MONTH_YEAR);


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();


Obtenir le numéro de semaine dans l'année




Code PHP :
$date->get_week_number();


Obtenir le numéro de semaine dans l'année




Code PHP :
$date->get_day_of_week();


Obtenir le numéro du jour dans l'année




Code PHP :
$date->get_day_of_year();


Exporter sous format année-mois-jour




Code PHP :
$date->to_date();


Vérifier si l'année de la date est bissextile




Code PHP :
$date->is_date_year_bissextile();


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
$date->add_days($number_days); // Ajoute $number_days jours
$date->add_weeks($number_weeks); // Ajoute $number_weeks jours