date

(PHP 3, PHP 4 , PHP 5)

date -- Formate une date/heure locale

Description

string date ( string format [, int timestamp] )

date() retourne une date sous forme d'une chaîne, au format donné par la chaîne format. La date est fournie par le paramètre timestamp, sous la forme d'un timestamp. Par défaut, la date courante est utilisée.

Note : 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). Sur les systèmes Windows, cette intervalle va du 01-01-1970 au 19-01-2038.

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()).

Les caractères suivants sont utilisés pour spécifier le format :

Tableau 1. Caractères de format pour la fonction date()

CaractèreDescriptionExemple de valeur
aAnte meridiem et Post meridiem en minusculesam ou pm
AAnte meridiem et Post meridiem en majusculesAM ou PM
BHeure Internet Swatch000 à 999
cDate au format ISO 8601 (ajouté en PHP 5)2004-02-12T15:19:21+00:00
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
F Mois, textuel, version longue; en anglais, comme January ou December January à December
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
I (i majuscule)L'heure d'été est activée ou pas1 si oui, 0 sinon.
jJour du mois sans les zéros initiaux1 à 31
l (L minuscule)Jour de la semaine, textuel, version longue, en anglaisSunday à Saturday
LEst ce que l'année est bissextile1 si bissextile, 0 sinon.
mMois au format numérique, avec zéros initiaux01 à 12
MMois, en trois lettres, en anglaisJan à Dec
nMois sans les zéros initiaux1 à 12
ODifférence d'heures avec l'heure de Greenwich (GMT), exprimée en heuresExemple : +0200
rFormat de date RFC 822Exemple : Thu, 21 Dec 2000 16:01:07 +0200
sSecondes, avec zéros initiaux00 à 59
SSuffixe ordinal d'un nombre pour le jour du mois, en anglais, sur deux lettres st, nd, rd ou th. Fonctionne bien avec j
tNombre de jours dans le mois28 à 31
TFuseau horaire du serveurExemples : EST, MDT ...
USecondes depuis l'époque Unix (1er Janvier 1970, 0h00 00s GMT)Voir aussi time()
wJour de la semaine au format numérique0 (pour dimanche) à 6 (pour samedi)
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)
YAnnée, 4 chiffresExemples : 1999 et 2003
yAnnée, 2 chiffresExemples : 99 et 03
zJour de l'année0 à 366
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

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

Exemple 1. Exemple avec date()

<?php
  
echo (date("l dS of F Y h:i:s A"));
  echo (
"Le 14 Juillet 2004 tombe un " . date("l", mktime(0,0,0,7,14,2004)));
?>

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 avec date()

<?php
echo date("l \\t\h\e jS");
// affiche 'Saturday the 8th'
// \t représente une tabulation
?>

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

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

<?php
$demain
= mktime(0, 0, 0, date("m") , date("d") + 1, date("Y"));
$le_mois_dernier = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$l_an_prochain = 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. Formatage avec date()

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

$aujourdhui = date("F j, Y, g:i a");                 // March 12, 2001, 10:16 pm
$aujourdhui = date("m.d.y");                         // 03.12.01
$aujourdhui = date("j, m, Y");                       // 12, 3, 2001
$aujourdhui = date("Ymd");                           // 20010312
$aujourdhui = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 12-03-01, 1631 1618 6 Monpm01
$aujourdhui = date('\C\'\e\s\t\ \l\e\ jS \j\o\u\r\.');   // C'est le 12th jour.
$aujourdhui = date("D M j G:i:s T Y");               // Mon Mar 12 15:16:08 MST 2001
$aujourdhui = date('H:m:s \m \e\s\t\ \l\e\ \m\o\i\s');     // 17:03:18 m est le mois
$aujourdhui = date("H:i:s");                         // 10:16:18

// notation française

$aujourdhui = date("d/m/y");                         // 12/03/01
$aujourdhui = date("d/m/Y");                         // 12/03/2001
?>

Pour formater des dates dans d'autres langues, utilisez les fonctions setlocale() et strftime().

Voir aussi getlastmod(), time(), strftime(), gmdate() et mktime().