date

(PHP 3, PHP 4, PHP 5)

date -- Formate une date/heure locale

Description

string date ( string format [, int timestamp] )

Retourne une date sous forme d'une chaîne, au format donné par le paramètre format, fournie par le paramètre timestamp ou la date et l'heure locales courantes si aucun timestamp n'est fourni. En d'autres termes, le paramètre timestamp est optionnel et vaut par défaut la valeur de la fonction time().

Liste de paramètres

format

Le format de la date désirée. Voir les options de formattage ci-dessous.

Tableau 1. Les caractères suivants sont reconnus dans le paramètre format.

Caractères pour le paramètre formatDescriptionExemple de valeurs retournées
Jour------
dJour du mois, sur deux chiffres (avec un zéro initial)01 à 31
DJour de la semaine, en trois lettres (et en anglais)Mon à Sun
jJour du mois sans les zéros initiaux1 à 31
l ('L' minuscule)Jour de la semaine, textuel, version longue, en anglaisSunday à Saturday
NReprésentation numérique ISO-8601 du jour de la semaine (ajouté en PHP 5.1.0)1 (pour Lundi) à 7 (pour Dimanche)
SSuffixe ordinal d'un nombre pour le jour du mois, en anglais, sur deux lettres st, nd, rd ou th. Fonctionne bien avec j
wJour de la semaine au format numérique0 (pour dimanche) à 6 (pour samedi)
zJour de l'année0 à 366
Semaine------
WNuméro de semaine dans l'année ISO-8601, les semaines commencent le lundi (ajouté en PHP 4.1.0)Exemple : 42 (la 42ème semaine de l'année)
Mois------
FMois, textuel, version longue; en anglais, comme January ou DecemberJanuary à December
mMois au format numérique, avec zéros initiaux01 à 12
MMois, en trois lettres, en anglaisJan à Dec
nMois sans les zéros initiaux1 à 12
tNombre de jours dans le mois28 à 31
Année------
LEst ce que l'année est bissextile1 si bissextile, 0 sinon.
oL'année ISO-8601. C'est la même valeur que Y, excepté que si le numéro de la semaine ISO (W) appartient à l'année précédente ou suivante, cette année sera utilisé à la place. (ajouté en PHP 5.1.0)Exemples : 1999 ou 2003
YAnnée sur 4 chiffresExemples : 1999 ou 2003
yAnnée sur 2 chiffresExemples : 99 ou 03
Heure------
aAnte meridiem et Post meridiem en minusculesam ou pm
AAnte meridiem et Post meridiem en majusculesAM ou PM
BHeure Internet Swatch000 à 999
gHeure, au format 12h, sans les zéros initiaux1 à 12
GHeure, au format 24h, sans les zéros initiaux0 à 23
hHeure, au format 12h, avec les zéros initiaux01 à 12
HHeure, au format 24h, avec les zéros initiaux00 à 23
iMinutes avec les zéros initiaux00 à 59
sSecondes, avec zéros initiaux00 à 59
Fuseau horaire------
eL'identifiant du fuseau horaire (ajouté en PHP 5.1.0)Exemples : UTC, GMT, Atlantic/Azores
I (i majuscule)L'heure d'été est activée ou pas1 si oui, 0 sinon.
ODifférence d'heures avec l'heure de Greenwich (GMT), exprimée en heuresExemple : +0200
PDifférence avec l'heure Greenwich (GMT) avec un deux-points entre les heures et les minutes (ajouté dans PHP 5.1.3)Exemple : +02:00
TFuseau horaire du serveurExemples : EST, MDT ...
ZDécalage horaire en secondes. Le décalage des zones à l'ouest de la zone UTC est négative, et à l'est, il est positif.-43200 à 43200
Date et Heure complète------
cDate au format ISO 8601 (ajouté en PHP 5)2004-02-12T15:19:21+00:00
rFormat de date RFC 2822Exemple : Thu, 21 Dec 2000 16:01:07 +0200
USecondes depuis l'époque Unix (1er Janvier 1970, 0h00 00s GMT)Voir aussi time()

Les caractères non reconnus seront imprimés tels quel. "Z" retournera toujours 0 lorsqu'il est utilisé avec gmdate().

timestamp

Le paramètre optionnel timestamp est un timestamp Unix de type entier qui vaut par défaut l'heure courante locale si le paramètre timestamp n'est pas fourni. En d'autres termes, il faut par défaut la valeur de la fonction time().

Valeurs de retour

Retourne une date formattée. Si une valeur non-numérique est utilisée dans le paramètre timestamp, FALSE sera retourné et une erreur de niveau E_WARNING est émise.

Erreurs / Exceptions

Chaque appel à une fonction date/heure génèrera un message de type E_NOTICE si le fuseau horaire n'est pas valide., et/ou un message de type E_STRICT si vous utilisez la configuration du système ou la variable d'environnement TZ. Voir aussi date_default_timezone_set()

Historique

VersionDescription
5.1.0 L'intervalle de validité d'un timestamp va généralement du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT. (Ces dates correspondent aux valeurs minimales et maximales des entiers 32 bits non-signés). Cependant, avant PHP 5.1.0, cette intervalle va du 01-01-1970 au 19-01-2038 sur quelques systèmes (e.g. Windows).
5.1.0

Émet un message de type E_STRICT et E_NOTICE lors d'erreurs de fuseaux horaires.

5.1.1 Il y a plusieurs constantes utiles de formats date/heure standarts qui peuvent être utilisées pour spécifier le paramètre format.

Exemples

Exemple 1. Exemple avec date()

<?php
// Définit le fuseau horaire par défaut à utiliser. Disponible depuis PHP 5.1
date_default_timezone_set('UTC');


// Affichage de quelque chose comme : Monday
echo date("l");

// Affichage de quelque chose comme : Monday 15th of August 2005 03:12:46 PM
echo date('l dS \of F Y h:i:s A');

// Affiche : July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* utilise les constantes dans le paramètre format */
// Affichage de quelque chose comme : Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);

// Affichage de quelque chose comme : 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

Vous pouvez faire afficher un caractère spécial dans la chaîne de format en le protégeant par un anti-slash. Si le caractère est lui-même une séquence incluant un anti-slash, vous devrez protéger aussi l'anti-slash.

Exemple 2. Protection des caractères dans la fonction date()

<?php
// Affichage de quelque chose comme : Wednesday the 15th
echo date("l \\t\h\e jS");
?>

Il est possible d'utiliser date() et mktime() ensemble pour générer des dates dans le futur ou dans le passé.

Exemple 3. Exemple avec date() et mktime()

<?php
$tomorrow  
= mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

Note : Cette méthode est plus sûre que simplement ajouter ou retrancher le nombre de secondes dans une journée ou un mois à un timestamp, à cause des heures d'hiver et d'été.

Voici maintenant quelques exemples de formatage avec date(). Notez que vous devriez échapper tous les autres caractères, car s'ils ont une signification spéciale, ils risquent de produire des effets secondaires indésirables. Notez aussi que les versions futures de PHP peuvent attribuer une signification à des lettres qui sont actuellement inertes. Lorsque vous échappez les caractères, pensez à utiliser des guillemets simples, pour que les séquences \n ne deviennent pas des nouvelles lignes.

Exemple 4. Exemple avec date()

<?php
// Aujourd'hui, le 12 Mars 2001, 10:16:18 pm

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // C'est le 12th jour.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m est le mois
$today = date("H:i:s");                         // 17:16:17
?>

Pour formater des dates dans d'autres langues, utilisez les fonctions setlocale() et strftime() au lieu de la fonction date().

Notes

Note : Pour générer un timestamp à partir d'une représentation de date, vous pouvez utiliser la fonction strtotime(). De plus, certaines bases de données disposent de fonctions pour convertir leurs propres formats de date en timestamps (par exemple, MySQL et sa fonction UNIX_TIMESTAMP()).

Astuce : Un timestamp représentant le début de la requête est disponible dans la variable $_SERVER['REQUEST_TIME'] depuis PHP 5.1.

Voir aussi

getlastmod()
gmdate()
mktime()
strftime()
time()