Come posso ottenere la data corrente in JavaScript?


2308

Come posso ottenere la data corrente in JavaScript?


383
var currentTime = new Date();
Hendrik,

11
Vedere la documentazione per l'oggetto Date . Ha degli esempi.
Quentin,


24
new Date()restituisce l' ora corrente , non la data corrente . La distinzione è importante se stai cercando di confrontarla con un'altra data che non ha una componente temporale (ovvero, è a mezzanotte).
Steve Bennett,

11
usa momentJs, questa lib è oro per gli sviluppatori.
RBoschini,

Risposte:


2717

Utilizzare new Date()per generare un nuovo Dateoggetto contenente la data e l'ora correnti.

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);

Questo ti darà la data odierna nel formato mm / gg / aaaa.

Passa semplicemente today = mm +'/'+ dd +'/'+ yyyy;al formato che desideri.


7
grazie per il codice .. ma quello che ancora non capisco, è la riga if (dd <10) {dd = '0' + dd} ... perché <10? da quello che ho capito dal codice è se il carattere del giorno è inferiore a 2, basta aggiungere uno 0 precedente all'inizio del giorno .. ma perché 10?
imin

20
@imin: perché meno di 2 caratteri mezzi 1 carattere ... e tutto sotto 10 (da 1 a 9) è 1 personaggio, quindi dovremo 01, 02, ...,09
ZFM

11
@MounaCheikhna - Come potremmo essere nell'anno 999?
nnnnnn,

21
Scambia intorno al mese e alla data se non sei in Nord America.
Mark Micallef,

3
Il nuovo Date.prototype.toLocaleDateString()metodo è una soluzione più flessibile. Fa parte di JavaScript da ECMAScript 5.1 ed è ben supportato dai browser sempreverdi. MDN:toLocaleDateString()
Adam Brown,

443

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

Utilizzare l' replaceopzione se si intende riutilizzare la utcvariabile, ad esempio new Date(utc), poiché Firefox e Safari non riconoscono una data con trattini.


6
Non credo :) Sembra abbastanza semplice!
Varun Natraaj,

6
toJSON () ritorna come utc datetime
Andy N

1
Restituisce un datetime JSON. toUTCString()ritorna come utc datetime.
Varun Natraaj,

25
Non considera TimezoneOffset. Al momento del test, stavo cercando "adesso" e ho ottenuto "ieri". stackoverflow.com/questions/13646446/...
mickmackusa

7
Perfetto. Questo è il modo più pulito per farlo sto vedendo qui. Funziona bene in MomentJS per "Today, Not Now"moment( new Date().toJSON().slice(0, 10) )
Kyle Hotchkiss,

234

AGGIORNATO! , Scorrere verso il basso

Se vuoi qualcosa di semplice per l'utente finale ... 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>

AGGIORNAMENTO DI UBBER Dopo aver procrastinato molto, ho finalmente GitHubbed e aggiornato questo con la soluzione finale che ho usato per me stesso. Ha anche avuto alcune modifiche dell'ultimo minuto per renderlo più dolce! Se stai cercando il vecchio jsFiddle, per favore vedi questo .

Questo aggiornamento è disponibile in 2 versioni, ancora relativamente piccole, anche se non piccole come la mia risposta originale sopra. Se vuoi estremamente piccolo, vai con quello.
Nota anche: questo è ancora meno gonfio di moment.js. Mentre moment.js è bello, imo, ha troppi metodi secolari, che richiedono un momento di apprendimento come se fosse una lingua. Il mio qui usa lo stesso formato comune di PHP: date .

Link veloci

Sapore 1new Date().format(String) My Personal Fav. Conosco il tabù ma funziona benissimo sull'oggetto data. Basta essere consapevoli di eventuali altre mod che potresti avere sull'oggetto Date.

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

Sapore 2dateFormat(Date, String) Metodo all-in-one più tradizionale. Ha tutte le capacità della precedente, ma viene chiamato tramite il metodo con Date param.

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

BONUS Flavor (richiede jQuery)$.date(Date, String) Questo contiene molto più di una semplice formatopzione. Estende l'oggetto Date di base e include metodi come addDays. Per ulteriori informazioni, consultare Git .

In questa mod, i caratteri del formato sono ispirati a PHP: date . Per un elenco completo, consultare il mio README

Questa mod ha anche un elenco molto più lungo di formati predefiniti. Per utilizzare un formato predefinito, è sufficiente inserire il nome della chiave.dateFormat(new Date(), 'pretty-a');

  • 'composto'
    • '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'
  • 'costanti'
    • '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'
  • 'bella'
    • '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'

Come puoi notare, puoi usare il doppio \per sfuggire a un personaggio.



14
@KamranAhmed Quasi 2 anni e oltre 40 voti dopo, direi che ne è valsa la pena. LoL. Da allora ho ampliato questa classe molto personalmente, ma non ho caricato come pensavo che la maggior parte delle persone userebbe quell'altro plugin js date che vedo consigliato, ma credo che dovrei renderlo più "pubblico" e aggiungerlo qui.
SpYk3HH,

14
moment.js è ora la cosa che useresti in questi giorni
Christian Stewart,

1
Sopra, c'è un refuso (che mi ci è voluto un po 'per individuare), utilizza una variabile "oggi" nella riga: "dayOfMonth = today +"
user1435707

"oggi + (objToday.getDate () <10)? '0' + objToday.getDate () + domEnder: objToday.getDate () + domEnder" - JS è un linguaggio stupido.
Alex S,

212

Il più breve possibile.

Per ottenere un formato come "2018-08-03":

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

console.log(today)

Per ottenere un formato come "03/08/2018":

let today = new Date().toLocaleDateString()

console.log(today)

Inoltre, puoi passare le impostazioni internazionali come argomento, ad esempio toLocaleDateString("sr"), ecc.


3
Ciò non riesce ancora a causa dello spostamento del fuso orario.
LStarky,

7
Perché questa non è la risposta accettata, la più semplice e utilizza funzioni
integrate

171

Se vuoi solo una data senza informazioni sull'ora, usa:

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

document.write(today);


40
Questa sembra essere l'unica risposta che risponde effettivamente alla domanda. Tutti gli altri rispondono su come formattare una data come stringa.
Inrego,

1
Sono d'accordo. In realtà volevo scrivere una risposta simile a questa e poi una piccola finestra è spuntata chiedendomi se ho letto tutte le risposte. Dato che ho letto solo le risposte migliori, ho deciso di verificare se ci sono risposte corrette e questa è stata la prima risposta corretta.
Lajos Arpad,

Questo imposta le ore usando UTC, che potrebbe non funzionare per tutti i casi d'uso.
McKay,

103

Prova questo:

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

Il risultato sarà simile

15/2/2012

67

Se stai cercando un controllo molto più granulare sui formati di data, ti consiglio vivamente di controllare momentjs. Libreria formidabile e solo 5 KB. http://momentjs.com/


7
Supporta la localizzazione come un fascino.
Risadinha,

In questi giorni usiamo date-fns - tratta le date come Immutabili (il momento muta le date), è più veloce ed è modulare (basta importare ciò di cui hai bisogno).
Freewalker,

2
Sei anni dopo la pubblicazione di questo momentjs ha assunto un certo peso. Potresti invece dare un'occhiata a github.com/iamkun/dayjs : l'ho descritto come "momentjs a dieta". Stessa semplice API.
benjamin.keen,

55

Puoi usare 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
Il momento è eccessivo solo per ottenere la data corrente.
Dan Dascalescu,

O moment().format("L")per rispettare le impostazioni internazionali correnti.
Dunc,

@DanDascalescu In realtà, la specifica di base Javascript per DateTime è così male.
Todd,

Se hai già importato momentjs nel tuo progetto, questa è la risposta più semplice e pulita.
Adil H. Raza,

52

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

document.write(d)

Per scomporlo in passaggi:

  1. (new Date()).toString() dà "Ven 28 giu 2013 15:30:18 GMT-0700 (PDT)"

  2. (new Date()).toString().split(' ') divide la stringa sopra in ogni spazio e restituisce un array come segue: ["Fri", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)" ]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ') prende il secondo, il terzo e il quarto valore dall'array sopra, li unisce con gli spazi e restituisce una stringa "Jun 28 2013"


2
Avevo bisogno di tempo alle 00:00:00 e non volevo ricostruirlo manualmente; il passaggio 2 mi porta lì perfettamente. Complimenti!
Panhandel,

3
È possibile salvare alcuni byte in questo modo:Date().split(' ').splice(1,3).join(' ')
hyde

47

Questo funziona ogni volta:

    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");

Inoltre, puoi chiamare il metodo toLocaleDateStringcon due parametri:

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

Articolo su MSDN . Ulteriori informazioni su questo metodo su MDN .


Bello, funziona su Chrome. Sfortunatamente non funziona su PhantomJS dal 22/04/2016
chris

soluzione interessante. dovrebbe essere in cima. new Date().toLocaleDateString("de-de")fa il trucco per me.
user3772108

29

Versione più pulita e semplice:

new Date().toLocaleString();

Il risultato varia in base alle impostazioni locali dell'utente :

27/02/2017, 09:15:41


27

Se sei soddisfatto del formato AAAA-MM-GG, anche questo funzionerà.

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

2018-03-10


Poiché la lunghezza è sempre fissa, possiamo usare anche la sottostringa. nuova data (). toISOString (). sottostringa (0, 10); Potrebbe anche essere un po 'più veloce.
Mika Karjunen,

23

Puoi usare la libreria Date.js che estende l'oggetto Date, quindi puoi avere il metodo .today ().


11
se stai usando jquery ui con un datepicker, puoi usare $ .datepicker.formatDate ('yy / mm / dd', new Date ())
Peter Munnings


16

La risposta di Varun non tiene conto di TimezoneOffset . Ecco una versione che fa:

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

I TimezoneOffsetminuti sono, mentre il costruttore Date richiede millisecondi, quindi la moltiplicazione per 60000.


15

La risposta più breve è: new Date().toJSON().slice(0,10)


Stavo cercando una funzione seed molto semplice che cambi regolarmente. Questa risposta è una vera delizia.
nirazul,


11

Poiché toISOString()restituirà solo l'ora UTC corrente, non l'ora locale. Dobbiamo fissare una data usando la funzione '.toString ()' per ottenere la data in yyyy-MM-ddformato simile

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

Per ottenere la data e l'ora nel yyyy-MM-ddTHH:mm:ssformato

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

Per ottenere la data e l'ora nel yyyy-MM-dd HH:mm:ssformato

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


10

Se vuoi un DD/MM/YYYYformato semplice , ho appena trovato questa semplice soluzione, anche se non prefigura zeri mancanti.

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



8

ULTIMA MODIFICA: 23/08/19 La libreria date-fns funziona in modo molto simile a moment.js ma ha un'impronta WAY più piccola. Ti permette di scegliere quali funzioni vuoi includere nel tuo progetto in modo da non dover compilare l'intera libreria per formattare la data di oggi. Se una lib minima di terze parti non è un'opzione per il tuo progetto, approvo la soluzione accettata da Samuel Meddows in alto.

Conservare la storia di seguito perché ha aiutato alcune persone. Ma per la cronaca è piuttosto confuso e rischia di rompersi senza preavviso, così come la maggior parte delle soluzioni in questo post

EDIT 2/7/2017 Una soluzione JS a una riga:

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, e chrome return todaysDate = "2/7/2017"
"funziona" * in IE10 +

Spiegazione

Ho scoperto che IE10 e IE Edge fanno le cose in modo leggermente diverso ... vai a capire. con new Date(Date.now()).toLocaleString()come input,

IE10 restituisce:

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

Potrei scrivere una grande funzione lunga e FTFY. Ma dovresti davvero usare moment.js per queste cose. La mia sceneggiatura si limita a ripulirlo e ti dà la tradizionale notazione americana espansa :> todaysDate = "March 06, 2017"

IE EDGE restituisce:

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

Certo non potrebbe essere così facile. La stringa della data di Edge ha caratteri "•" invisibili tra ciascuno visibile. Quindi non solo verificheremo ora se il primo carattere è un numero, ma i primi 3 caratteri, poiché si scopre che qualsiasi singolo personaggio nell'intero intervallo di date alla fine sarà un punto o una barra ad un certo punto. Quindi, per mantenere le cose semplici, basta .slice () i primi tre caratteri (minuscolo buffer contro i futuri shenanigans) e quindi verificare la presenza di numeri. Dovresti probabilmente notare che questi punti invisibili potrebbero potenzialmente persistere nel tuo codice. Potrei approfondire la questione se hai piani più grandi della semplice stampa di questa stringa alla tua vista.

∴ aggiornato one-liner:

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];

Che schifo leggere. Che ne dite di:

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];

RISPOSTA ORIGINALE

Ho un one-liner per te:

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

e [1]ti darà l'ora del giorno.


7

Puoi usare questo

<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>

L'HTML è

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

6

Se stai usando jQuery. Prova questa fodera:

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

Ecco la convenzione per la formattazione della data

  • d - giorno del mese (nessuno zero iniziale)
  • gg - giorno del mese (due cifre)
  • o - giorno dell'anno (senza zeri iniziali)
  • oo - giorno dell'anno (tre cifre)
  • D - nome del giorno breve
  • GG - nome del giorno lungo
  • m - mese dell'anno (senza zero iniziale)
  • mm - mese dell'anno (due cifre)
  • M - nome breve del mese
  • MM - nome del mese lungo
  • y - anno (due cifre)
  • yy - year (quattro cifre)

Ecco il riferimento per jQuery datepicker


5

Un modo semplice per farlo (mentre considera il tuo fuso orario attuale sfruttando il formato ISO aaaa-mm-gg) è:

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

Di solito, questo è un formato di data compatibile per tutti gli usi e puoi convertirlo in un valore di data puro se necessario:

Date.parse(d); // 1582044297000

4

Puoi controllare questo

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

E consulta la documentazione per il costruttore Date (). collegamento


4

Qual è il grosso problema con questo ... Il modo più pulito per farlo è

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


1
Restituirebbe errori, come questo 3/4/2018, , meglio da usare new Date().toJSON().slice(0,10).
DevonDahon,

Questo è perfetto per ottenere semplicemente una data per la visualizzazione o per informazioni sul registro della console o per l'interfaccia utente. Meglio per me senza il.slice(0,10)
Paul Carlton

4

Questo può aiutarti

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

Questo stamperà la data corrente nel formato gg / MM / aaaa


4

Questo è buono per ottenere la data formattata

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


3

Penso che questa sia una vecchia domanda, ma il modo più semplice sarebbe il seguente:

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

function CurrentTime(){
  alert(TimeStamp);
}

Questo prenderà l'ora corrente, la passerà a una stringa in base alla posizione e quindi potrai chiamare la funzione CurrentTime per visualizzare l'ora. Questo sarebbe, per me, il modo più efficace per ottenere un timestamp per qualcosa.


Ciò restituirà dati + tempo, ad es. '2018-4-6 16:20:22', e la domanda è come ottenere solo la data.
Vlad Bezden,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.