Dernière mise à jour : 16/02/2016 à 15h58
Table des matières
- Les référentiels temporels
- Initialiser la classe
- Affichage de la date
- Traitement sur l'objet Date
- Obtenir le timestamp
- Obtenir l'année de la date
- Obtenir le mois de la date
- Obtenir le jour de la date
- Obtenir l'heure de la date
- Obtenir les minutes de la date
- Obtenir les secondes de la date
- Obtenir le numéro de semaine dans l'année
- Obtenir le numéro de semaine dans l'année
- Obtenir le numéro du jour dans l'année
- Exporter sous format année-mois-jour
- Vérifier si l'année de la date est bissextile
- Vérifier si la date est antérieure à une autre date
- Vérifier si la date est postérieure à une autre date
- Vérifier si la date est égale à une autre date
- Modifier les données d'une date après sa création
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.
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 :
- Date::FORMAT_DAY_MONTH (par défaut) affichage court de la date, de la forme JJ/MM
- Date::FORMAT_DAY_MONTH_YEAR affichage de la date, de la forme JJ/MM/AAAA
- Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE affichage de la date complet avec heure et minutes, de la forme JJ/MM/AAAA à HHhMM
- Date::FORMAT_TIMESTAMP pour afficher le timestamp
- Date::FORMAT_RFC822 pour afficher la date au format RFC822
- Date::FORMAT_ISO8601 pour afficher la date au format ISO8601
- Date::FORMAT_DAY_MONTH_YEAR_LONG affichage long de la date, de la forme jour mois AAAA
- Date::FORMAT_DAY_MONTH_YEAR_TEXT affichage long de la date, de la forme jour de la semaine jour mois AAAA
- Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE_TEXT affichage long de la date, de la forme jour de la semaine jour mois AAAA à HHhMM
- Date::FORMAT_RELATIVE : affichage la différence entre la date et la date actuelle
- Date::FORMAT_ISO_DAY_MONTH_YEAR : affiche la date au format ISO, de la forme AAAA-MM-JJ (utilisé dans les input calendriers)
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