Dernière mise à jour :2008-07-25

informatique

Les fonctions de dates en PHP sont puissante, flexibles mais aussi très facile d'utilisation. Cet article fait une introduction à ces fonctions, explique le concept de «Unix timestamp» qui est au coeur de la plupart de ces fonctions et présente comment il est facile de s'en servir.

Afficher la date et l'heure courante avec la fonction date()

La fonction la plus utilisée est certe, celle qui retourne la date et l'heure courante et permet de la formatter tel que désiré, soit, la fonction date(). Voici la syntaxe d'utilisation de celle-ci :

date("option_de_formattage")

Les options de formattage

Il y a un grand nombre d'options de formattage possible. Voici une liste de tous les caractères de formattage possible :

a

"am" ou "pm"

A

"AM" ou "PM"

B

Swatch Internet time

d

Jour du mois, 2 chiffres avec un zéro devant les nombres inférieurs à 10; "01" à "31"

D

Jour de la semaine, textuel, 3 lettres; Ex.: "Fri"

F

Mois, textuel, long; Ex.: "January"

g

Heure, Format 12 heures sans le zéro devant les nombres inférieurs à 10; "1" à "12"

G

Heure, Format 24 heures sans le zéro devant les nombres inférieurs à 10; "0" à "23"

h

Heure, Format 12 heures avec le zéro devant les nombres inférieurs à 10; "01" à "12"

H

Heure, Format 24 heures avec le zéro devant les nombres inférieurs à 10; "00" à "23"

i

Minutes; "00" à "59"

I

"1" Si heure avancée, "0" si non.

j

Jour du mois sans le zéro devant les nombres inférieurs à 10; "1" à "31"

l

Jour du mois, textuel, long; Ex.: "Friday"

L

Booléen pour savoir si c'est une année bissextile; "0" ou "1"

m

Mois avec le zéro devant les nombres inférieurs à 10; "01" à "12"

M

Mois, textuel, 3 lettres; Ex.: "Jan"

n

Mois sans le zéro devant les nombres inférieurs à 10; "1" à "12"

r

Date formatté du type RFC 822; Ex.: "Thu, 21 Dec 2000 16:01:07 +0200"

s

Secondes; "00" à "59"

S

Suffixes, textuel, 2 caractères; Ex.: "th", "nd"

t

Nombre of days in the given month; "28" à "31"

T

Fuseau horaire de la machine; Ex.: "MDT"

w

jour de la semaine, numerique, Ex.: "0" (Dimanche) à "6" (Samedi)

Y

année, 4 chiffres; Ex.: "1999"

y

année, 2 chiffres; Ex.:"99"

z

jour de l'année; "0" à "365"

Z

Décalage horaire en secondes ("-43200" à "43200")

Premiers exemple d'utilisation de la fonction date()

La fonction date n'est pas seulement fait pour afficher la date du serveur. Vous pouvez aussi passer un timestamp (souvent appelé Unix timestamps puisqu'il a été développé sur des machines Unix), qui est le nombre de secondes depuis le 1er janvier 1970 (commencant à une seconde après minuit). Par défaut, la fonction date prends la date courante mais vous pouvez passer le timestamp que vous désirez. Exemple :

print date("l M dS, Y, H:i:s",5000)

affiche :

Thursday Jan 01st, 1970, 02:23:20

Prenez garde de ne pas essayer d'utiliser des caractères de formattage réservées comme votre propre chaine de formattage. Par exemple, si vous utilisez ceci :

print date("L'heure actuelle est : H.i");

Ceci donnera quelque chose comme :

0'05euFri, 27 May 2005 17:27:46 +0200e pmc31ueFridayFridaye e4631 : 17.27

Pour que l'affichage soit correct vous devrez écrire :

print date("\L'\h\e\u\\r\e \a\c\\t\u\e\l\l\e \e\s\\t : H.i");

Voici le résultat :

L'heure actuelle est : 17.36

Vous remarquerez que certain caractères ont deux backslash. La raison est que ces caractères précédés d'un backslash représentent déjà un caractère spécial, par exemple \t est égal à une tabulation.

Il y a aussi la fonction gmdate() qui est la même que la fonction date() à l'exception que celle-ci retourne l'heure moyenne du méridien de Greenwich.

Le timestamp

Pour retourner le timestamp courant, ont utilise simplement la fonction time(). Exemple :

print time();

affiche quelque chose comme ceci :

1117208412

Vous pouvez trouver le nombre de secondes qui se sont écoulées depuis que j'ai écris ces ligne en faisant rouler se script et ensuite en comparant votre résultat par rapport au mien. Ceci vous démontre en quelque sorte comment ont peut se servir du timestamp pour faire des calculs avec les dates.

La fonction getdate()

La fonction date est très pratique pour afficher la date mais n'est pas la fonction idéale pour retourner des données utiles pour être utilisées par vos applications. La fonction getdate() est plus efficace pour cette tâche. En lui donnant un timestamp, elle retourne un tableau avec les éléments suivants :

  • "seconds" : secondes
  • "minutes" : minutes
  • "hours" : heures
  • "mday" : jour du mois
  • "wday" : jour de la semaine numérique
  • "mon" : mois numérique
  • "year" : année numérique
  • "yday" : jour de l'année numérique
  • "weekday" : jour de la semaine textuel
  • "month" : mois, textuel
  • "0" : timestamp

Par défaut, la fonction retourne la date du jour.

Le code suivant présente les valeurs énumérées ci-dessus pour la date du jour :

<?php
// Création d'un tableau avec la date du jour
$datetime_array = getdate();

// Afficher tous les éléments du tableau
foreach($datetime_array as $key=>$val)
{
print "$key: $val<br />";
}
?>

Ce qui donne, au moment ou j'écris :

seconds: 30
minutes: 55
hours: 17
mday: 27
wday: 5
mon: 5
year: 2005
yday: 146
weekday: Friday
month: May
0: 1117209330

Générer un timestamp avec la fonction mktime()

Nous pouvons facilement générer un timestamp basé sur la date et l'heure actuel mais il faut bien souvent en créer un avec d'autres dates utilisées dans nos applications. La fonction mktime() est celle qui permet de faire ca. En lui passant une date, elle génère un timestamp. Elle prends sept paramètres, tous des entiers. En voici la syntaxe :

mktime(hour,minute,second,month,day,year,is_dst)

Le dernier paramètre désigne l'heure avancé (1 pour oui, 0 pour non).

Un exemple de timestamp pour 2005-05-25 12:20:10 :

print mktime(12,20,10,5,25,2005);

ceci donne le résultat suivant :

1117016410

La fonction checkdate

Parfois vous n'êtes pas sûr des données que vous recevez, par exemple, depuis des champs de formulaire en HTML ou encore, directement depuis des champs de bases de données. La fonction checkdate peut devenir utile dans ce cas. Voici sa syntaxe :

checkdate(month,day,year)

La fonction retourne une valeur booléenne (true si la date est valid et false dans le cas contraire

Bien que les fonctions énumérées ci-dessus soit les principales fonctions offertes par PHP, ce langage offre d'autres fonction dont voici une liste :

microtime() : Cette fonction va plus loin que la fonction time en retournant aussi les microsecondes.

strtotime() : Analyse du texte (en anglais) et le convertie en timestamp. Par exemple, strtotime("now") retourne le timestamp de la date et de l'heure actuel (équivalent de time();).

strftime() : Cette fonction ressemble à la fonction date mais prend des paramètres précédés de pourcentage ce qui permet de ne pas mettre de \ devant nos caractères lors de formattage comme c'est le cas dans l'exemple de cet article (voir ci-dessus).

Auteur : Sylvain Bilodeau

Date de mise en ligne : 2005-05-27

Aucun commentaire pour l'instant.