Les Date
sont des objets permettant de manipuler des dates (jour et heure).
Pour créer une date, plusieurs formats différents sont acceptés:
En entrée | Exemple |
---|---|
(rien) |
|
Timestamp en millisecondes (depuis 01/01/1970) |
|
Date ISO |
|
Date format long (dépend des navigateurs) |
|
Date format court (dépend des navigateurs) |
|
Valeur par valeur Attention la numérotation des mois commence par 0. |
|
Valeur par valeur, UTC |
|
Pour les dates crées à partir de chaîne de caractères, les virgules sont ignorées et la casse des mots n’a pas d’importance. Le mois et le jour de la semaine peuvent être écrits au format court (Sun
) ou long (Sunday
)
Lorsqu’on crée une date sans spécifier le fuseau horaire, JavaScript utilise le fuseau horaire du navigateur.
Attention, console.log(date)
affiche la date GMT+00.
Pour afficher la date selon le fuseau horaire en cours (la valeur que l’utilisateur verra), il faut l’afficher au format texte: console.log(""+date)
.
var date = new Date(2018, 1, 11, 13, 59, 18, 425);
console.log(date.toLocaleString()); // 11/02/2018 à 13:56:18
console.log(date.getHours()); // 13
console.log(date.getUTCHours()); // 12
Pour traiter des dates qui ne dépendent pas d’un fuseau horaire (date de naissance, date historique…), on utilise des dates UTC (Universal Time Zone).
var date = new Date(Date.UTC(2018, 1, 11, 13, 56, 18));
console.log(date.toLocaleString()); // 11/02/2018 à 14:56:18
console.log(date.getHours()); // 14
console.log(date.getUTCHours()); // 13
Date.now()
retourne la date actuelle au format timestamp (et non un objet Date
).
var date = new Date(Date.UTC(2018, 1, 11, 13, 56, 18));
Sortie | Exemple |
---|---|
Timestamp (en millisecondes) |
|
Format ISO (= format JSON) |
|
Format long |
|
Format selon la locale du navigateur |
|
Format UTC |
|
Valeur par valeur |
|
Valeur par valeur, UTC |
|
date.toDateString() // "Sun Feb 11 2018"
date.toLocaleDateString() // "11/02/2018"
Ou valeur par valeur (voir jour + heure)
date.toTimeString() // "14:56:18 GMT+0100 (CET)"
date.toLocaleTimeString() // "14:56:18"
Ou valeur par valeur (voir jour + heure)
Les méthodes qui permettent de récupérer une date selon une locale peuvent prendre la locale à utiliser en argument, au format BCP 47. Sinon la locale du navigateur est utilisée. Des options peuvent également être passées pour contrôler le format de la date.
console.log(date.toLocaleDateString()); // 11/02/2018
console.log(date.toLocaleDateString(["zh", "en-US"])); // 2018/2/11
console.log(date.toLocaleDateString([], { day: "numeric", month: "short", year: "numeric" })); // 11 févr. 2018
Option | Valeur possible |
---|---|
localeMatcher |
“lookup”, “best fit” |
timeZone |
“UTC” (ou le fuseau horaire du navigateur de la locale par défaut) |
hour12 |
true, false |
formatMatcher |
“basic”, “best fit” |
weekday |
“narrow”, “short”, “long” |
era |
“narrow”, “short”, “long” |
year |
“numeric”, “2-digit” |
month |
“numeric”, “2-digit”, “narrow”, “short”, “long” |
day |
“numeric”, “2-digit” |
hour |
“numeric”, “2-digit” |
minute |
“numeric”, “2-digit” |
second |
“numeric”, “2-digit” |
timeZoneName |
“short”, “long” |
Pour modifier une date, il existe l’équivalent set
de toutes les méthodes get
:
setFullYear()
, setMonth()
, etc.
Pour tester l’égalité ou la différence entre deux dates, on utilise valueOf()
var date1 = new Date(),
date2 = new Date();
console.log(date1.valueOf() == date2.valueOf());