Introduction
Le composant Zend_Date fournit une API simple de manipulation
des dates et des temps. Ses méthodes acceptent un grand nombre de paramètres formatés,
comme des parties de dates, et complètent bien le support natif des dates de PHP.
Même si rester simple est un objectif, manipuler des dates et des temps localisés,
les additionner, par parties, les convertir ... mène vers une certaine complexité
inévitable. Les dates et les temps sont souvent notés de manière très différente selon la
locale. Par exemple, certaines locales placent le mois en premier, d'autres l'année. Pour
plus d'information sur la gestion de la localisation et de la normalisation, voyez le
manuel de
Zend_Locale.
Zend_Date supporte aussi les noms abrégés des mois dans
beaucoup de langues.Zend_Locale facilite la localisation et la
normalisation des mois localisés et des jours de semaines, leur conversion vers des
timestamps.
Définissez toujours un fuseau horaire par défaut
Avant toute manipulation de date, que ce soit par les fonctions PHP, ou par Zend
Framework, soyez sûrs que votre fuseau horaire par défaut est défini. Configurez votre
variable d'environnement TZ, date.timezone
dans le php.ini, ou utilisez
»
date_default_timezone_set(). En PHP nous pouvons ajuster les fonctions de date
et temps pour fonctionner selon un certain fuseau horaire. Pour les options et la liste
des fuseaux, consultez
»
La liste des identifiants de fuseaux horaires.
Example #1 Spécifier un fuseau par défaut
// timezone pour un américain en Californie
date_default_timezone_set('America/Los_Angeles');
// timezone pour un allemand en Allemagne
date_default_timezone_set('Europe/Berlin');
Lorsque vous créez des instances de Zend_Date, leur
fuseau sera automatiquement mis à celui par défaut ! Ainsi, le
paramètre de fuseau horaire prendre en compte le DST si besoin, vous n'aurez donc pas
besoin de leconfigurer.
Souvenez vous que les fuseaux UTC et GMT
n'incluent pas la notion "d'heure d'hiver"(Daylight Saving
Time, DST). Donc même si vous dites à Zend_Date de prendre en
compte le DST, il sera annulé pour les futures instances de
Zend_Date utilisant UTC ou GMT.
Pourquoi utiliser Zend_Date ?
Zend_Date a les caractéristiques suivantes, qui étendent
et complètent les fonctions de date de PHP :
-
API simple
Zend_Date propose une API simple, qui combine les
meilleures fonctionnalités depuis 4 langages de programmation. Il est par
exemple possible de comparer ou ajouter 2 dates.
-
Internationalisé
Toutes les abréviations des noms des mois ou des jours sont traduits dans
plus de 130 langues. Les méthodes supportent des entrées et sorties de dates
utilisant ces noms localisés.
-
Timestamps infinis
La documentation de PHP 5.2 indique, "L'intervalle de validité des
timestamps est du 13 Dec 1901 20:45:54 GMT au 19 Jan 2038 03:14:07 GMT",
Zend_Date supporte un intervalle quasi illimité grâce à
l'extension BCMath. Si l'extension BCMath n'est pas disponible, alors le
support des timestamp sera réduit à la valeur maximale du type PHP
float
supporté par le serveur. "La taille du float est dépendant
de la plate-forme, un maximum de ~1.8e308 avec une précision d'environ 14
décimales est une valeur connue (64 bit IEEE format)." [
» http://www.php.net/float]. Aussi,
des limitations dans le calcul des flottants, comme des arrondis non
désirables, peuvent apparaître. Ces problèmes sont évités grâce à l'extension
BCMath, si disponible.
-
Support des dates ISO_8601
Le support complet de ISO_8601 est pris en charge. Même les données
partiellement ISO_8601 seront identifiées correctement. Ces formats sont utiles
pour le travail avec des bases de données. Par exemple MSSQL et
»
MySQLles utilise mais diffèrent légèrement dans leur format, cependant
ils sont supportés par Zend_Date grâce à la constante de
spécification de format
Zend_Date::ISO_8601. Si les
chaînes des dates sont conformes à "Y/m/d" ou "Y-m-d H:i:s", selon les formats
de date() de PHP, utilisez le support de
Zend_Date pour le format ISO 8601.
-
Calculer le sunrise et sunset
N'importe où dans la journée, les temps du sunrise (levé de soleil) et
sunset (couché de soleil) peuvent être affichés.