# date

(PHP 4, PHP 5, PHP 7, PHP 8)

date — Formate un horodatage Unix

### Description

date(string `$format`, ?int `$timestamp` = `null`): string

Retourne une date sous forme d'une chaîne, au format donné par le paramètre `format`, fournie par le paramètre `timestamp` (horodatage Unix) ou la date et l'heure 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().

Avertissement

Les horodatages Unix ne gèrent pas les fuseaux horaires. Utilisez la classe DateTimeImmutable, et sa méthode de formatage DateTimeInterface::format() pour formater les informations de date/heure avec un fuseau horaire attaché.

### Liste de paramètres

`format`

  Format accepté par DateTimeInterface::format().

  > Note: date() générera toujours `000000` pour les microsecondes puisqu'il prend un paramètre int, alors que DateTimeInterface::format() prend en charge les microsecondes si un objet de type DateTimeInterface a été créé avec des microsecondes.

`timestamp`

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

### Valeurs de retour

Retourne une date formatée en chaîne de caractères.

### Erreurs / Exceptions

Chaque appel à une fonction date/heure générera un diagnostic de type `E_WARNING` si le fuseau horaire n'est pas valide. Voir aussi date_default_timezone_set()

### Historique

Version | Description
--- | ---
8.0.0 | `timestamp` est désormais nullable.

### Exemples

Exemple #1 Exemple avec date()

`<?php
// Définit le fuseau horaire par défaut à utiliser.
date_default_timezone_set('UTC');
// Affichage de quelque chose comme : Monday
echo date("l");
// Affichage de quelque chose comme : Monday 8th of August 2005 03:12:46 PM
echo date('l jS \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 : Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// 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 antislash. Si le caractère est lui-même une séquence incluant un antislash, vous devrez protéger aussi l'antislash.

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 10 Mars 2001, 5:16:18 pm, Fuseau horaire
// Mountain Standard Time (MST)
$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'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day (10ème jour du mois).
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \e\s\t\ \l\e\ \m\o\i\s'); // 17:03:18 m est le mois
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (le format DATETIME de MySQL)
?>`

Pour formater des dates dans d'autres langues, IntlDateFormatter::format() peut être utilisé à la place de 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 timestamp (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'].

### Voir aussi

- DateTimeImmutable::__construct() - Retourne un nouvel objet DateTimeImmutable
- DateTimeInterface::format() - Retourne une date formatée suivant le format fourni
- gmdate() - Formate une date/heure GMT/TUC
- idate() - Formate une partie de l'heure/date locale en tant qu'entier
- getdate() - Retourne la date/heure
- getlastmod() - Retourne la date de dernière modification de la page
- mktime() - Retourne l'horodatage UNIX d'une date
- IntlDateFormatter::format() - Formate la date et l'heure sous forme de chaîne
- time() - Retourne l'horodatage UNIX actuel
- Constantes DateTime Prédéfinie