Comment obtenir la date actuelle en JavaScript?


2308

Comment obtenir la date actuelle en JavaScript?


383
var currentTime = new Date();
Hendrik

11
Consultez la documentation de l'objet Date . Il a des exemples.
Quentin


24
new Date()renvoie l' heure actuelle , pas la date actuelle . La distinction est importante si vous essayez de la comparer à une autre date qui n'a pas de composante horaire (c'est-à-dire à minuit).
Steve Bennett

11
utilisez momentJs, cette bibliothèque est idéale pour les développeurs.
RBoschini

Réponses:


2717

Permet new Date()de générer un nouvel Dateobjet contenant la date et l'heure actuelles.

var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

Cela vous donnera la date d'aujourd'hui au format mm / jj / aaaa.

Modifiez simplement le today = mm +'/'+ dd +'/'+ yyyy;format que vous souhaitez.


7
merci pour le code .. mais ce que je ne comprends toujours pas, c'est la ligne si (dd <10) {dd = '0' + dd} ... pourquoi <10? d'après ce que je comprends du code, si le caractère du jour est inférieur à 2, ajoutez simplement un 0 précédent devant le jour .. mais pourquoi 10?
imin

20
@imin: parce que moins de 2 caractères signifie 1 caractère ... et tout moins de 10 ans (1 à 9) est de 1 caractère, donc nous aurons 01, 02...,09
zfm

11
@MounaCheikhna - Comment pourrions-nous être en l'an 999?
nnnnnn

21
Échangez le mois et la date si vous n'êtes pas en Amérique du Nord.
Mark Micallef

3
La nouvelle Date.prototype.toLocaleDateString()méthode est une solution plus flexible. Il fait partie de JavaScript depuis ECMAScript 5.1 et est bien pris en charge par les navigateurs à feuilles persistantes. MDN:toLocaleDateString()
Adam Brown

443

var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

Utilisez l' replaceoption si vous comptez réutiliser la utcvariable new Date(utc), comme Firefox et Safari ne reconnaissent pas une date avec des tirets.


6
Je ne le pense pas :) Semble assez simple!
Varun Natraaj

6
toJSON () retourne sous la forme utc datetime
Andy N

1
Il renvoie une date / heure JSON. toUTCString()renvoie comme utc datetime.
Varun Natraaj

25
Il ne prend pas en compte TimezoneOffset. Au moment des tests, je cherchais "maintenant" et j'ai eu "hier". stackoverflow.com/questions/13646446/…
mickmackusa

7
Parfait. C'est la façon la plus propre de le faire que je vois ici. Fonctionne bien dans MomentJS pour "Aujourd'hui, pas maintenant"moment( new Date().toJSON().slice(0, 10) )
Kyle Hotchkiss

234

MISE À JOUR! , Défiler vers le bas

Si vous voulez quelque chose de simple et joli pour l'utilisateur final ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.

var objToday = new Date(),
	weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
	dayOfWeek = weekday[objToday.getDay()],
	domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
	dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
	curMonth = months[objToday.getMonth()],
	curYear = objToday.getFullYear(),
	curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
	curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
	curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
	curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;

document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>

MISE À JOUR D'UBBER Après beaucoup de tergiversations, j'ai finalement GitHubbed et mis à jour cela avec la solution finale que j'ai utilisée pour moi-même. Il a même eu des modifications de dernière minute pour le rendre plus doux! Si vous recherchez l'ancien jsFiddle, veuillez le voir .

Cette mise à jour se décline en 2 versions, toujours relativement petites, mais pas aussi petites que ma réponse originale. Si vous voulez extrêmement petit, allez-y.
Remarquez également: c'est encore moins gonflé que moment.js. Bien que moment.js soit sympa, imo, il a trop de méthodes profanes, qui nécessitent d'apprendre moment comme s'il s'agissait d'une langue. Le mien utilise ici le même format commun que PHP: date .

Liens rapides

Flavour 1new Date().format(String) My Personal Fav. Je connais le tabou mais fonctionne très bien sur l'objet Date. Soyez juste conscient de tout autre mod que vous pourriez avoir sur l'objet Date.

//  use as simple as
new Date().format('m-d-Y h:i:s');   //  07-06-2016 06:38:34

Flavour 2dateFormat(Date, String) Méthode tout-en-un plus traditionnelle. A toutes les capacités du précédent, mais est appelé via la méthode avec le paramètre Date.

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

Saveur BONUS (nécessite jQuery)$.date(Date, String) Elle contient bien plus qu'une simple formatoption. Il étend l'objet Date de base et inclut des méthodes telles que addDays. Pour plus d'informations, veuillez consulter le Git .

Dans ce mod, les caractères de format sont inspirés de PHP: date . Pour une liste complète, veuillez consulter mon README

Ce mod a également une liste beaucoup plus longue de formats prédéfinis. Pour utiliser un format prédéfini, entrez simplement son nom de clé.dateFormat(new Date(), 'pretty-a');

  • 'composé'
    • 'commonLogFormat' == 'd / M / Y: G: i: s'
    • 'exif' == 'Y: m: d G: i: s'
    • 'isoYearWeek' == 'Y \\ WW'
    • 'isoYearWeek2' == 'Y - \\ WW'
    • 'isoYearWeekDay' == 'Y \\ WWj'
    • 'isoYearWeekDay2' == 'Y - \\ WW-j'
    • 'mySQL' == 'Ymd h: i: s'
    • 'postgreSQL' == 'Yz'
    • 'postgreSQL2' == 'Yz'
    • 'soap' == 'Ymd \\ TH: i: su'
    • 'soap2' == 'Ymd \\ TH: i: s.uP'
    • 'unixTimestamp' == '@U'
    • 'xmlrpc' == 'Ymd \\ TG: i: s'
    • 'xmlrpcCompact' == 'Ymd \\ tGis'
    • 'wddx' == 'Ynj \\ TG: i: s'
  • «constantes»
    • 'AMERICAN' == 'F j Y'
    • «AMERICANSHORT» == «m / d / Y»
    • «AMERICANSHORTWTIME» == «m / d / Y h: i: sA»
    • 'ATOM' == 'Ymd \\ TH: i: sP'
    • 'COOKIE' == 'l dMY H: i: s T'
    • 'EUROPEAN' == 'j FY'
    • 'EUROPEANSHORT' == 'dmY'
    • 'EUROPEANSHORTWTIME' == 'dmY H: i: s'
    • 'ISO8601' == 'Ymd \\ TH: i: sO'
    • 'LEGAL' == 'j FY'
    • «RFC822» == «D d M y H: i: s O»
    • «RFC850» == «l dMy H: i: s T»
    • «RFC1036» == «D d M y H: i: s O»
    • 'RFC1123' == 'D d MYH: i: s O'
    • 'RFC2822' == 'D d MYH: i: s O'
    • 'RFC3339' == 'Ymd \\ TH: i: sP'
    • 'RSS' == 'D d MYH: i: s O'
    • 'W3C' == 'Ymd \\ TH: i: sP'
  • 'joli'
    • 'pretty-a' == 'g: i.sA l jS \\ o \\ f FY'
    • 'pretty-b' == 'g: iA l jS \\ o \\ f FY'
    • 'pretty-c' == 'n / d / Y g: iA'
    • 'pretty-d' == 'n / d / Y'
    • 'pretty-e' == 'F jS - g: ia'
    • 'pretty-f' == 'g: iA'

Comme vous pouvez le remarquer, vous pouvez utiliser le double \pour échapper à un personnage.



14
@KamranAhmed Près de 2 ans et 40+ votes plus tard, je dirais que l'effort en valait la peine. LoL. J'ai depuis développé cette classe beaucoup personnellement, mais je ne l'ai pas téléchargé car je pensais que la plupart des gens utiliseraient cet autre plugin js date que je recommande, mais je suppose que je devrais le rendre plus "public" et l'ajouter ici.
SpYk3HH

14
moment.js est maintenant la chose que vous utiliseriez ces jours-ci
Christian Stewart

1
Ci-dessus, il y a une faute de frappe (qui m'a pris un certain temps à repérer), elle utilise une variable "aujourd'hui" dans la ligne: "dayOfMonth = today +"
user1435707

"today + (objToday.getDate () <10)? '0' + objToday.getDate () + domEnder: objToday.getDate () + domEnder" - JS est un langage stupide.
Alex S

212

Le plus court possible.

Pour obtenir un format comme "2018-08-03":

let today = new Date().toISOString().slice(0, 10)

console.log(today)

Pour obtenir un format comme "03/08/2018":

let today = new Date().toLocaleDateString()

console.log(today)

Vous pouvez également passer les paramètres régionaux comme argument, par exemple toLocaleDateString("sr"), etc.


3
Cela échoue toujours en raison du décalage de fuseau horaire.
LStarky

7
Pourquoi n'est-ce pas la réponse acceptée, la plus simple et utilise des fonctions
intégrées

171

Si vous voulez juste une date sans informations d'heure, utilisez:

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);


40
Cela semble être la seule réponse qui répond réellement à la question. Tout le monde répond sur la façon de formater une date sous forme de chaîne.
Inrego

1
Je suis d'accord. En fait, je voulais écrire une réponse similaire à celle-ci, puis une petite fenêtre est apparue me demandant si j'ai lu toutes les réponses. Comme je n'ai lu que les meilleures réponses, j'ai décidé de vérifier s'il y avait des réponses correctes et celle-ci était la première bonne réponse.
Lajos Arpad

Cela définit les heures d'utilisation de l'UTC, ce qui peut ne pas fonctionner pour tous les cas d'utilisation.
McKay

103

Essaye ça:

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

Le résultat sera comme

15/2/2012

67

Si vous recherchez un contrôle beaucoup plus précis sur les formats de date, je vous recommande vivement de vérifier momentjs. Bibliothèque formidable - et seulement 5 Ko. http://momentjs.com/


7
Prend en charge la localisation comme un charme.
Risadinha

De nos jours, nous utilisons date-fns - il traite les dates comme immuables (Moment mute les dates), est plus rapide et modulaire (il suffit d'importer ce dont vous avez besoin).
Freewalker

2
Six ans après la publication de ce moment, js a pris un peu de poids. Vous voudrez peut-être consulter github.com/iamkun/dayjs à la place - je l'ai fait décrire comme "momentjs sur un régime". Même API simple.
benjamin.keen

55

Vous pouvez utiliser moment.js: http://momentjs.com/

var m = moment().format("DD/MM/YYYY");

document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>


30
Le moment est exagéré pour obtenir juste la date actuelle.
Dan Dascalescu

Ou moment().format("L")pour respecter les paramètres régionaux actuels.
Dunc

@DanDascalescu En fait, la spécification de base Javascript pour DateTime est si mauvaise.
Todd

Si vous avez déjà importé momentjs dans votre projet, c'est la réponse la plus simple et la plus claire.
Adil H.Raza

52

var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

Pour le décomposer en étapes:

  1. (new Date()).toString() donne "Ven 28 juin 2013 15:30:18 GMT-0700 (PDT)"

  2. (new Date()).toString().split(' ') divise la chaîne ci-dessus sur chaque espace et renvoie un tableau comme suit: ["Ven", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)" ]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ') prend les deuxième, troisième et quatrième valeurs du tableau ci-dessus, les joint avec des espaces et renvoie une chaîne "28 juin 2013"


2
J'avais besoin d'un temps en 00:00:00 et je ne voulais pas le reconstruire manuellement; l'étape 2 m'y amène parfaitement. Gloire!
panhandel

3
Vous pouvez enregistrer quelques octets en procédant ainsi:Date().split(' ').splice(1,3).join(' ')
hyde

47

Cela fonctionne à chaque fois:

    var now = new Date();
    var day = ("0" + now.getDate()).slice(-2);
    var month = ("0" + (now.getMonth() + 1)).slice(-2);
    var today = now.getFullYear() + "-" + (month) + "-" + (day);
    
    console.log(today);


45
var date = new Date().toLocaleDateString("en-US");

Vous pouvez également appeler la méthode toLocaleDateStringavec deux paramètres:

var date = new Date().toLocaleDateString("en-US", {
    "year": "numeric",
    "month": "numeric"
});

Article sur MSDN . En savoir plus sur cette méthode sur MDN .


Nice, fonctionne sur Chrome. Malheureusement, ne fonctionne pas sur PhantomJS au 22/04/2016
chris

solution cool. devrait être au sommet. new Date().toLocaleDateString("de-de")fait l'affaire pour moi.
user3772108

29

Version plus propre et plus simple:

new Date().toLocaleString();

Le résultat varie en fonction des paramètres régionaux de l'utilisateur :

27/02/2017, 9:15:41 AM


27

Si vous êtes satisfait du format AAAA-MM-JJ, cela fera également l'affaire.

new Date().toISOString().split('T')[0]

2018-03-10


Comme la longueur est toujours fixe, nous pouvons également utiliser une sous-chaîne. new Date (). toISOString (). substring (0, 10); Cela pourrait aussi être un peu plus rapide.
Mika Karjunen

23

Vous pouvez utiliser la bibliothèque Date.js qui étend l'objet Date, vous pouvez donc avoir la méthode .today ().


11
si vous utilisez jquery ui avec un datepicker, vous pouvez utiliser $ .datepicker.formatDate ('yy / mm / dd', new Date ())
Peter Munnings


16

La réponse de Varun ne tient pas compte de TimezoneOffset . Voici une version qui fait:

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

Le TimezoneOffsetest minutes, tandis que le constructeur Date prend des millisecondes, donc la multiplication par 60000.


15

La réponse la plus courte est: new Date().toJSON().slice(0,10)


Je cherchais une fonction de graine très simple qui change régulièrement. Cette réponse est un vrai régal.
nirazul


11

Comme toISOString()ne renverra que l'heure UTC actuelle, pas l'heure locale. Nous devons faire une date en utilisant la fonction '.toString ()' pour obtenir la date au yyyy-MM-ddformat comme

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);

Pour mettre la date et l'heure au yyyy-MM-ddTHH:mm:ssformat

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);

Pour mettre la date et l'heure au yyyy-MM-dd HH:mm:ssformat

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));


10

Si vous voulez un DD/MM/YYYYformat simple , je viens de trouver cette solution simple, bien qu'elle ne préfixe pas les zéros manquants.

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );



8

DERNIÈRE MODIFICATION: 23/08/19 La bibliothèque date-fns fonctionne un peu comme moment.js mais a une ENCORE plus petite empreinte. Il vous permet de choisir les fonctions que vous souhaitez inclure dans votre projet afin que vous n'ayez pas à compiler la bibliothèque entière pour formater la date d'aujourd'hui. Si une bibliothèque tierce minimale n'est pas une option pour votre projet, j'approuve la solution acceptée par Samuel Meddows.

Préserver l'histoire ci-dessous car cela a aidé quelques personnes. Mais pour mémoire, c'est assez hacky et susceptible de se casser sans avertissement, comme le sont la plupart des solutions de ce post

EDIT 2/7/2017 Une solution JS en ligne:

tl; dr

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

edge, ff latest, & chrome return todaysDate = "2/7/2017"
"works" * dans IE10 +

Explication

J'ai découvert qu'IE10 et IE Edge font les choses un peu différemment. avecnew Date(Date.now()).toLocaleString() comme entrée,

IE10 renvoie:

"Tuesday, February 07, 2017 2:58:25 PM"

Je pourrais écrire une grande fonction longue et FTFY. Mais vous devez vraiment utiliser moment.js pour ce genre de choses. Mon script nettoie simplement cela et vous donne la notation américaine traditionnelle étendue :> todaysDate = "March 06, 2017"

IE EDGE renvoie:

"‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"

Bien sûr, cela ne pouvait pas être aussi simple. La chaîne de date d'Edge contient des caractères «•» invisibles entre chacun d'eux. Donc, non seulement nous allons maintenant vérifier si le premier caractère est un nombre, mais les 3 premiers caractères, car il se trouve que tout caractère unique dans la plage de dates entière finira par être un point ou une barre oblique à un moment donné. Donc, pour garder les choses simples, juste .slice () les trois premiers caractères (petit tampon contre les futurs manigances), puis de vérifier les nombres. Il convient probablement de noter que ces points invisibles pourraient potentiellement persister dans votre code. Je creuserais peut-être si vous avez de plus gros plans que d'imprimer cette chaîne à votre vue.

∴ one-liner mis à jour:

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

Ça craint de lire. Que diriez-vous:

var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];

RÉPONSE ORIGINALE

J'ai une doublure pour vous:

new Date(Date.now()).toLocaleString().split(', ')[0];

et [1]vous donnera l'heure de la journée.


7

Vous pouvez utiliser ceci

<script>
function my_curr_date() {      
    var currentDate = new Date()
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    var year = currentDate.getFullYear();
    var my_date = month+"-"+day+"-"+year;
    document.getElementById("dateField").value=my_date;    
}
</script>

Le HTML est

<body onload='return my_curr_date();'>
    <input type='text' name='dateField' id='dateField' value='' />
</body>

6

Si vous utilisez jQuery. Essayez cette doublure:

$.datepicker.formatDate('dd/mm/yy', new Date());

Voici la convention de mise en forme de la date

  • d - jour du mois (pas de zéro non significatif)
  • jj - jour du mois (deux chiffres)
  • o - jour de l'année (pas de zéros non significatifs)
  • oo - jour de l'année (trois chiffres)
  • D - nom court du jour
  • DD - nom du jour long
  • m - mois de l'année (pas de zéro non significatif)
  • mm - mois de l'année (deux chiffres)
  • M - nom du mois abrégé
  • MM - nom du mois long
  • y - année (deux chiffres)
  • aa - année (quatre chiffres)

Voici la référence pour jQuery datepicker


5

Un moyen simple de retirer cela (tout en considérant votre fuseau horaire actuel, il profite du format ISO aaaa-mm-jj) est:

let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"

Habituellement, c'est un format de date compatible assez polyvalent et vous pouvez le convertir en valeur de date pure si nécessaire:

Date.parse(d); // 1582044297000

4

Vous pouvez commander ceci

var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);

Et consultez la documentation du constructeur Date (). lien


4

Quel est le gros problème avec cela .. La façon la plus propre de le faire est

var currentDate=new Date().toLocaleString().slice(0,10);


1
Il retournerait des erreurs, comme celle-ci 3/4/2018, , mieux à utiliser new Date().toJSON().slice(0,10).
DevonDahon

C'est parfait pour obtenir simplement une date pour la vue ou pour des informations sur le journal de la console ou pour l'interface utilisateur. Mieux pour moi sans.slice(0,10)
Paul Carlton

4

Cela peut vous aider

var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());

Cela imprimera la date actuelle au format jj / mm / aaaa


4

C'est bien pour obtenir une date formatée

let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);


3

Je pense que c'est une vieille question mais la manière la plus simple serait la suivante:

var date = new Date();
var TimeStamp = date.toLocaleString();

function CurrentTime(){
  alert(TimeStamp);
}

Cela saisira l'heure actuelle, la passera à une chaîne basée sur l'emplacement, puis vous pourrez appeler la fonction CurrentTime pour afficher l'heure. Ce serait, pour moi, le moyen le plus efficace d'obtenir un horodatage pour quelque chose.


Cela renverra des données + temps, par exemple. '2018-4-6 16:20:22', et la question est de savoir comment obtenir la date uniquement.
Vlad Bezden
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.