Comment utiliser JDate ?

From Joomla! Documentation

This page is a translated version of the page How to use JDate and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎Nederlands • ‎русский

Introduction

JDate est une classe d'assistance, étendue de la classe PHP DateTime, qui permet aux développeurs de gérer plus efficacement le format des dates. Cette classe permet aux développeurs de formater les dates pour les rendre lisibles dans les chaînes de caractères, des interactions MySQL, des calculs timestamp UNIX et fournit également des méthodes d'aide pour pouvoir travailler dans différents fuseaux horaires.

Utilisation de JDate

Création d'une instance JDate

Toutes les méthodes d'aide pour les dates nécessitent une instance de la classe JDate. Pour commencer, vous devez en créer une. Un objet JDate peut être créé de deux façons. L'une est la méthode type native pour la simple création d'une nouvelle instance :

$date = new JDate(); // Creates a new JDate object equal to the current time.

Vous pouvez également créer une instance à l'aide de la méthode statique définie dans JDate :

$date = JDate::getInstance(); // Alias of 'new JDate();'

Il n'y a pas de différences entre ces deux méthodes puisque JDate::getInstance permet simplement de créer une nouvelle instance de JDate, exactement comme pour la première méthode indiquée.

De façon alternative, vous pouvez également récupérer la date courante (comme objet JDate) à partir de JApplication, en utilisant :

$date = JFactory::getDate();

Arguments

Le constructeur JDate (et la méthode statique getInstance) accepte deux paramètres en option : Une chaîne de format de date, et un fuseau horaire. Ne pas préciser une chaîne de date aura pour conséquence la création d'un objet JDate avec la date et l'heure courantes. Dans le même temps, ne pas préciser de fuseau horaire aura pour conséquence d'indiquer à l'objet JDate d'utiliser le réglage par défaut du fuseau horaire.

Le premier argument, s'il est utilisé, doit être une chaîne de caractères qui sera analysée par le constructeur natif PHP DateTime. Exemple :

$currentTime = new JDate('now'); // Current date and time
$tomorrowTime = new JDate('now +1 day'); // Current date and time, + 1 day.
$Plus1MonthTime = new JDate('now +1 month'); // Current date and time, + 1 month.
$Plus1YearTime = new JDate('now +1 year'); // Current date and time, + 1 year.
$Plus1YearAnd1MonthTime = new JDate('now +1 year +1 month'); // Current date and time, + 1 year and 1 month.
$PlusTimeToTime = new JDate('now +1 hour +30 minutes +3 seconds'); // Current date and time, + 1 hour, 30 minutes and 3 seconds
$PlusTimeToTime = new JDate('now -1 hour +30 minutes +3 seconds'); // Current date and time, + 1 hour, 30 minutes and 3 seconds
$CombinedTimeToTime = new JDate('now -1 hour -30 minutes 23 seconds'); // Current date and time, - 1 hour, +30 minutes and +23 seconds

$date = new JDate('2012-12-1 15:20:00'); // 3:20 PM, December 1st, 2012

Exemples

Exemple de formats de dates

JFactory::getDate() récupère un objet JDate et nous créons donc la fonction JDate toFormat :

JFactory::getDate()->toFormat('%a %d %b %Y - %H:%M')

Dans l'API du CMS Joomla! 3.3 la fonction "toFormat" a été remplacée par "format". Ainsi, l'exemple ci-dessus devrait être :

JFactory::getDate()->format('%a %d %b %Y - %H:%M')

Function: toISO8601(boolean $local = false) : string

$date = new JDate('2016-01-01 02:00:00'); // A.M. time, in GMT timezone

Nous renseignons la fonction param before sur "false" et after sur "true" (le fuseau horaire de l'utilisateur est réglé sur "America/New_York") et nous obtenons :

$timezone = new DateTimeZone( JFactory::getUser()->getParam('timezone') );
$date->setTimezone($timezone);
echo $date->toISO8601(false); // 2016-01-01 T 02:00:00 +00:00
echo $date->toISO8601(true); // 2015-12-31 T 21:00:00-05:00 (local time in New York)