COURS PHP

  Dernière mise à jour effectuée le : Jeudi 08 juillet 2004    

Espace Experts

Accueil | Formater une date

Formater une date

Instruction :

strftime()
Type fonction
Domaine d'application Date
Syntaxe strftime("Format", "DateEnSecondes") ;
strftime(
$VariableChaine, $VariableDate) ;



Fonctionnement
Renvoie une chaîne de caractères représentant la date selon le format spécifié dans la chaîne "Format" en fonction de la date donnée dans "DateEnSecondes", exprimée en nombre de secondes depuis le temps 0 de l'ère UNIX, c'est à dire le premier janvier 1970 (epoch). Si le paramètre de date est omis, c'est la date du jour qui est prise en compte.
L'inconvénient, c'est que le fonctionnement de cette fonction dépend du fait que PHP ait été compilé ou non avec une bibliothèque C supportant ces formats. En général, sous UNIX, tout fonctionne bien, mais il peut y avoir des dysfonctionnements sous Windows.

 



Paragraphe4

Voici, appliqué à la date de dernière modification de cette page, le résultat donné par les diffrents types de formats disponibles. La date de dernière modification de cette page, exprimée en secondes depuis l'ère 0 de UNIX (epoch, le premier janvier 1970) est :
$DateDerMaj = filemtime($_SERVER['SCRIPT_FILENAME']) ;
ce qui nous donne :
La variable $DateDerMaj contient : 1089301152

Vous pouvez la voir en clair tout en haut de cette page, comme sur toutes les pages de mon site.
Nous allons maintenant écrire successivement, l'instruction suivante :
$FormatDate = strftime("Format", $DateDerMaj) ;
en remplaçant "Format" par les différentes valeurs successives possibles et voir ce que ça donne dans le tableau ci-dessous.
Comme le résultat dépend de la date de dernière mise à jour de cette page, les résultats en bleu étant par ailleurs le résultat réel (j'ai écrit l'instruction dans le code de la page), vous aurez la véritable valeur de retour de la fonction et elle changera chaque fois que je mettrai cette page à jour).
J'ai classé les formats par genre, jour, mois, année, heure etc... pour s'y retrouver plus facilement.

 

Format
Instruction
Représentation théorique
Résultat
Formats pour les jours
%A
strftime("%A", $DateDerMaj) ; Jour en toutes lettres dans la langue locale du serveur
Thursday  
%a
strftime("%a", $DateDerMaj) ; Trois premières lettres du jour dans la langue locale du serveur
Thu  
%d
strftime("%d", $DateDerMaj) ; Le jour du mois sur deux chiffres
08  
%e
strftime("%e", $DateDerMaj) ; Le jour du mois sur un ou deux chiffres selon le jour (ne fonctionne pas sous windows) 8  
%j
strftime("%j", $DateDerMaj) ; Le numéro du jour dans l'année, 1 représentant le 1er janvier, représenté sur 3 chiffres 190  
%u
strftime("%u", $DateDerMaj) ;  Le jour de la semaine en commençant par 1 pour lundi et en terminant par 7 pour dimanche (ne fonctionne pas sous windows) 4  
%w
strftime("%w", $DateDerMaj) ; Le jour de la semaine en commençant par 0 pour dimanche et 6 pour samedi. 4  
%l
strftime("%l", $DateDerMaj) ; C'est un "L" minuscule, pas un i majuscule.Devrait donner le jour du mois en toutes lettres en anglais, mais... 5  
Formats pour les mois
%B
strftime("%B", $DateDerMaj) ;  Le mois en toutes letres dans la langue locale du serveur July  
%b
strftime("%b", $DateDerMaj) ; Les trois premières lettres du mois dans la langue locale du serveur. Jul  
%h
strftime("%h", $DateDerMaj) ; Même chose que "b", mais ne fonctionne pas sous windows. Jul  
%m
strftime("%m", $DateDerMaj) ; Retourne le numéro du mois sur deux chiffres. 07  
Formats pour les années
%y
strftime("%y", $DateDerMaj) ; Donne l'année représentée sur deux chiffres 04    
%Y
strftime("%Y", $DateDerMaj) ; Retourne l'année sur quatre chiffres.   2004    
Formats pour les heures
 %H
strftime("%H", $DateDerMaj) ; Donne l'heure au format 24 heures, représentée sur deux chiffres 17     
 %I
strftime("%I", $DateDerMaj) ; Retourne l'heure au format 12 heures représenté sur deux chiffres 05     
 %p
strftime("%p", $DateDerMaj) ; Retourne AM ou PM selon matin ou après-midi PM     
 %Z
strftime("%Z", $DateDerMaj) ; Donne le fuseau horaire. CEST     
Formats pour les minutes
 %M
strftime("%M", $DateDerMaj) ; Retourne le nombre de minutes exprimé sur deux chiffres 39     
Formats pour les secondes
 %S
strftime("%S", $DateDerMaj) ; Retourne le nombre de secondes représenté sur deux chiffres. 12     
Formats pour les semaines
 %U
strftime("%U", $DateDerMaj) ; Retourne le numéro de la semaine dans l'année représenté sur deux chiffres, en considérant que la première semaine de l'année est celle du premier dimanche. En 2004, on a un décalage d'une semaine en moins par rapport au calendrier officiel. 27     
 %V
strftime("%V", $DateDerMaj) ;  Numéro de la semaine ISO 8601:1988 représenté sur deux chiffres, mais ne fonctionne pas sous windows.  28      
%W 
strftime("%W", $DateDerMaj) ;  Retourne le numéro de la semaine dans l'année représenté sur deux chiffres, en considérant que la première semaine de l'année est celle du premier lundi. En 2004, on a un décalage d'une semaine en moins par rapport au calendrier officiel.  27       
Formats pour les siècles (mais oui...)
 %C
strftime("%C", $DateDerMaj) ;  Retourne le numéro du siècle représenté sur deux chiffres. Ne fonctionne pas sous windows et donne 20 en 2004 sous Free ! (sic!). 20       
Formats pour les dates elles mêmes
%D 
strftime("%D", $DateDerMaj) ;  Donne la date comme si elle était formatée %m/ %d /%y mais ne fonctionne pas sous windows. 07/08/04       
 %r
strftime("%r", $DateDerMaj) ;  Donne la date comme si elle était formatée %I: %M: %S %p mais ne fonctionne pas sous windows.  05:39:12 PM    
 %R
strftime("%R", $DateDerMaj) ;  Retourne l'heure comme si elle était formatée %H:%M. Mais ne fonctionne pas sous windows.  17:39  
%T 
strftime("%T", $DateDerMaj) ;  Retourne l'heure comme si elle était formatée %H:%M:%S. Mais ne fonctionne pas sous windows.   17:39:12    
%c 
 strftime("%c", $DateDerMaj) ; Retourne la date affichée d'une manière traditionnelle dans la langue locale du serveur. Par exemple, JJ/MM/AA hh:mm:ss si c'était français. Thu Jul 8 17:39:12 2004    
%x 
strftime("%x", $DateDerMaj) ; Retourne la date affichée d'une manière traditionnelle dans la langue locale du serveur. Par exemple, JJ/MM/AA si c'était français (comme %c, mais sans donner l'heure).  07/08/04    
%X
strftime("%X", $DateDerMaj) ; Retourne l'heure affichée dans le format traditionnel de la langue locale du serveur. En france, hh:mm:ss. 17:39:12    


Combinaisons

On peut bien entendu, combiner tous ces formats les uns avec les autres dans la fonction en passant cette combinaison de formats comme argument dans la chaîne "Format".
On peut aussi insérer les caractères de séparation (espace, /, etc...) que l'on veut.
Le format peut également être placé dans une variable sous forme de chaîne de caractères et cette variable passée en argument à la fonction srtftime().

Par exemple, pour écrtire la date sous la forme jj / mm / aaaa, on n'a qu'à écrire les instructions suiantes en mettant des espaces entre les "/" :

$FormatSortie = "%d / %m / %Y" ;
$FormatDate = strftime($FormatSortie, $DateDerMaj) ;

Ce qui donne :

08 / 07 / 2004

 
 
 
 
 



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00

© Philippe Médan 1999-2003. Tous droits de reproduction réservés pour tous pays.