La documentazione JS per Date
afferma che esistono quattro modi per utilizzare il costruttore Date
. Da https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date:Chiamata al costruttore Date con un oggetto Date
new Date();
new Date(value); // integer
new Date(dateString); // string
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
Tuttavia, sembra che ci sia un quinto modo per utilizzare il costruttore, passando in un oggetto data. Ad esempio, il seguente funziona bene nella console Chrome:
date = new Date() // Wed Sep 02 2015 16:30:21 GMT-0700 (PDT)
date2 = new Date(date) // Wed Sep 02 2015 16:30:21 GMT-0700 (PDT)
Si tratta di oggetti diversi, così sembra come un modo semplice per fare una copia di una data:
date2 === date // false
date.setMonth(1) // 1422923421090
date // Mon Feb 02 2015 16:30:21 GMT-0800 (PST)
date2 // Wed Sep 02 2015 16:30:21 GMT-0700 (PDT)
Quindi le mie domande sono :
- Perché non è presente nella documentazione ufficiale? Mi sto perdendo qualcosa?
- È un uso supportato ufficialmente del costruttore? Funzionerà su tutte le piattaforme/browser?
- È un modo sicuro di eseguire una copia di un oggetto
Date
, sostituendo ad es.date2 = new Date().setTime(date.getTime())
?
Funziona in Firefox, ma il risultato non è esattamente lo stesso timestamp dell'originale (i millisecondi sono tagliati). Esegui l'esempio alcune volte: [jsfiddle] (https://jsfiddle.net/at51o4aw/) – lzydrmr