Ho appena scoperto che se uso new Date('2015-1-1')
, l'ora non ha effetto fuso orario, ma Se utilizzo new Date('2015-01-01')
l'ora ha l'effetto fuso orario in Node.js.Date ('2015-1-1') uscite diverse da Date (2015-01-01)
ho uscita 4 Date()
:
console.log(new Date('2015-1-1'));
console.log(new Date('2015-01-1'));
console.log(new Date('2015-1-01'));
console.log(new Date('2015-01-01'));
l'uscita è
Thu Jan 01 2015 00:00:00 GMT+0800 (CST)
Thu Jan 01 2015 00:00:00 GMT+0800 (CST)
Thu Jan 01 2015 00:00:00 GMT+0800 (CST)
Thu Jan 01 2015 08:00:00 GMT+0800 (CST)
si può vedere l'ultima volta che è 08:00:00
perché sono in otto fuso orario.
Penso che l'uscita dipenda dalla cifra del mese o dal numero della data. Quando è 10, 11 o 12 l'output è sempre 08:00:00
Mi chiedo perché e se c'è un modo migliore per gestirlo tranne controllare manualmente il bit del mese e il numero della data?
ottengo lo stesso output quando eseguo i tuoi esempi su Chrome console Javascript in modo sembra essere un bug/funzionalità V8. – HBP
In Firefox ho ricevuto una data non valida per tutti tranne l'ultima riga. Inoltre, ho trovato questo da MDN: [Differenze nel presunto fuso orario] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Differences_in_assumed_time_zone) – Kobi
Eppure un altro problema con le stringhe di data di analisi. Il ** solo ** modo affidabile per analizzare una stringa di data è farlo manualmente (anche se una libreria può essere d'aiuto). Le prime 3 stringhe non sono esattamente stringhe ISO 8601, quindi possono essere analizzate, tuttavia l'implementazione richiede. L'ultimo è un formato ISO 8601. Per ECMAScript 2015 viene analizzato come "locale" nel sistema host. Sotto ES5 deve essere analizzato come UTC, e prima di ciò (cioè ECMAScript ed 3 e precedenti) qualsiasi cosa, incluso NaN. – RobG