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.
var currentTime = new Date();