![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
J'utilse PHP depuis très longtemps. Cela m'a permis d'améliorer la qualité de ce site ainsi que de simplifier la conception de site.
Jusqu'à présent, je m'étais fait une librairie pour mes besoins personnels, mais elle n'était pas assez propre pour être utilisable. Pour une fois, je vais partager un peut de mes tatonnements et de mon expérience concernant PHP
Comme de nombreux langages de programmation, la manipulation de l'heure et de la date se fait autour des fonctions date() et time().
Les exemples qui suivent montre comment afficher l'heure et le jour.
<?php $date = date("d/m/Y"); $heure = date("H:i"); echo 'Nous sommes le '.$date.' et il est '.$heure; echo '<br>'; echo 'timestamp: '.time(); echo '<br><br>'; echo 'aujourd\'hui :',date("d/m/Y", time()); echo '<br>'; echo 'demain :',date("d/m/Y", time()+24*3600); echo '<br>'; echo 'hier :',date("d/m/Y", time()-24*3600); echo '<br>'; echo 'jour +1 : ',date("d/m/Y", mktime(0,0,0,11,11,2010)+24*3600); ?>');
Auparavant ce script fonctionnait très bien. On obtient mainteant le message suivant:
Warning: date(): It is not safe to rely on the system's timezone settings. You a re *required* to use the date.timezone setting or the date_default_timezone_set( ) function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europ e/Paris' for '2.0/DST' instead in C:\usr\php\date2.php on line 2
Afin de supprimer ce warning, il faut fixer la time zone. On peut la mettre à la valeur UTC par exemple, mais pour nous Europe/Paris conviendra très bien.
<?php // Maintenant, on doit fixer le time zone date_default_timezone_set('Europe/Paris'); $date = date("d/m/Y"); $heure = date("H:i"); echo 'Nous sommes le '.$date.' et il est '.$heure; echo '
'; echo 'timestamp: '.time(); echo '
'; echo 'aujourd\'hui :',date("d/m/Y", time()); echo '
'; echo 'demain :',date("d/m/Y", time()+24*3600); echo '
'; echo 'hier :',date("d/m/Y", time()-24*3600); echo '
'; echo 'jour +1 : ',date("d/m/Y", mktime(0,0,0,11,11,2010)+24*3600); ?>');
Le format d'affichage des jours et des heures est assez standard pour ceux qui ont l'habitude de la programmation et peut se résumer dans le tableau suivant:
caractère | correspondance |
a | am ou pm |
A | AM ou PM |
B "Swatch Beat Time" | |
d | Jour du mois |
D | jour de la semaine en anglais abrégé en 3 lettres |
F | mois |
g | heure sur 12h sans zéro initial |
G | heure sur 24h, sans zéro initial |
h | heure sur 12h allant de 01 à 12 |
H | heure sur 24h allant de 01 à 23 |
i | minutes |
j | jour du mois |
l | jour de la semaine en anglais |
L | 1 pour l'année bissextile, 0 sinon |
m | chiffre du mois, de 01 à 12 |
M | abréviation du nom du mois |
S | suffixe ordinal pour le jour du mois |
t | nombre de jour dans le mois |
U | nombre de secondes depuis le 1er Janvier 1970 |
y | année sur 2 chiffres |
Y | année sur 4 chiffres |
z | jour de l'année de 0 à 365 |
Z | décalage horaire de la zone en secondes (-43200 à 43200) |
Il est aussi possible de retourner les éléments concernant la date sous forme de tableau:
<?php date_default_timezone_set('Europe/Paris'); $current_date = getdate(); //On affiche les éléments du tableau renvoyé foreach ($current_date as $key => $value) { echo $key.' : '.$value.'
'; } echo '<br><br>'; ?>');
Cela retourne les valeurs suivantes:
seconds : 24 minutes : 13 hours : 11 mday : 30 wday : 2 mon : 11 year : 2010 yday : 333 weekday : Tuesday month : November 0 : 1291112004
Une autre manière de faire, plus rapide consiste à utiliser print_r, comme dans ce script getdate.php:
<?php date_default_timezone_set('Europe/Paris'); $today = getdate(); print_r($today); ?>
>php getdate.php Array ( [seconds] => 21 [minutes] => 27 [hours] => 11 [mday] => 19 [wday] => 2 [mon] => 5 [year] => 2015 [yday] => 138 [weekday] => Tuesday [month] => May [0] => 1432027641 )
Les formats d'affichage précédent permettent d'afficher la date lorsqu'il s'agit d'un format numérique. Ce n'est plus le cas, lorsqu'on souhaite afficher le mois ou le jour en toutes lettres.
Une manière de faire, consiste à passer par un tableau de hash qui va convertir d'Anglais en Français.
<?php $days = array( 'dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', ); $days_keys = array( 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', ); $translate = array_combine($days_keys,$days); date_default_timezone_set('Europe/Paris'); echo $days_keys[1]."\n"; echo $days[1]."\n"; echo $translate [date("l",time())]; ?>résultat:
>php jour.php Monday lundi mardi