09
Juin
2002

Gestion des dates en PHP

Gérer les dates en PHP, voilà une question qui revient souvent dans les forums des grands sites de la communauté. Nous allons essayer ici de retracer les grandes lignes de la manipulation de dates et éventuellement quelques trucs et astuces pour optimiser votre code.

Au programme :

  • Comment PHP gère-t-il les dates ?
  • Que faire avec les timestamps ?

Comment PHP gère-t-il les dates ?

PHP, comme beaucoup d'applications, utilise le timestamp UNIX pour gérer les dates.
"Cool !" me direz-vous, mais qu'est-ce qu'un timestamp ?

Un timestamp UNIX est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00h 00m 00s GMT. Par exemple, pour le 14/09/2006 à 15:17:16 , le timestamp correspondant est 1158239836.
Ainsi, le temps étant normalisé, il devient possible de le formater comme l'on veut.

La question suivante est : Comment récupérer le timestamp en cours ?
Il existe une fonction php "toute prête" pour l'obtenir, il s'agit de time()

Exemple :

<?php
    $mavariable 
time();
    echo 
'Le timestamp en cours est : <B>'.$mavariable.'</B>';
?>

Ce petit bout de code retournera :

Le timestamp en cours est : 1158239836.

Cette fonction permet donc de récupérer le timestamp au moment de l'exécution, mais il pourrait être intéressant de connaître le timestamp pour une date donnée.
Pour cela, il existe la fonction PHP mktime()
Elle s'utilise avec les arguments suivants :

<?php
    $timestamp 
mktime(int heureint minuteint secondeint moisint jour,
                                   
int année, |[int heure_hiver|]);
?>

Le paramètre heure_hiver, optionnel, est là pour pouvoir spécifier si l'on est en heure d'hiver ou pas :
1 : heure d'hiver
0 : heure "normale"
-1 : (défaut) si on ne sait pas Par conséquent, pour obtenir le timestamp correspondant au 22 mai 1981 à 00h45, il suffit de :

<?php
    
echo mktime(04505221981);
?>

Simple non ?

Posté par Mathieu LESNIAK à 15:12 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :
Partager cet article : Ajouter en favori sur KreuZZPoster cet article sur ScoopeoPoster cet article sur FuzzPoster cet article sur diggAjouter en favori sur Del.icio.usPoster cet article sur reddit
Erianor
09/06/02 21:44:44

Dommage que tu n'es pas écrit cette article il y a un mois. Il m'aurait évité quelques heures de prise de tête. Bravo car je trouve ça très clair. Je ne peux que vous encourager à continuer.

Sansnom
10/07/02 02:55:23

Quel est votre scrit de blog ? Celui que vous utilisez sur le site ?! ;-p) Si ce n'est pas indiscret ... !

maverick
10/07/02 18:25:05

Script de blog ? de koi tu parles ?

bonatoc
28/09/02 20:01:48

Un petit ajout pour gérer les "1" de chaque mois... ;-)

<?php    $monthes = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet',                             'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');    $days = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');    $date_first = $days[date('w')];    $date_second = $monthes[date('n')]; $day_nr = date('d'); if ($day_nr == 1) {$day_nr = ("$day_nr"."er");}    echo $date_first.' '.$day_nr.' '.$date_second.' '.date('Y'); ?>

Kevbrok
05/04/04 18:08:46

Pas mal comme article ;)

Mais ya moyen de transformer le Timestampe en date & heure? Etles gérer avec le GMT ??

Ce serais trop bien :) merci ;)

OnRencontre
18/10/06 15:15:25

Je te conseille d'aller faire un tour sur http://www.phpinfo.net il y a des portions de script également pour gérer ça.

AzertyH
AzertyH
18/11/06 01:49:41

Merci pour ton tuto vraiment très claire. Il m'aide beaucoup pour comprendre ce qui me donne du fil à retordre en ce moment!

Merci mille fois

Les commentaires ne sont pas autorisés pour ce billet