Je veux obtenir la date actuelle, mais l'heure devrait être 00:00:00.000
J'ai essayé ceci:
var m = moment();
m.set({hour:0,minute:0,second:0,millisecond:0});
console.log(m.toISOString());
mais j'ai: 2016-01-12T23:00:00.000Z
pourquoi 23 et pas 00?
Moment.js stocke les dates it utc et peut lui appliquer différents fuseaux horaires. Par défaut, il applique votre fuseau horaire local. Si vous souhaitez régler l'heure sur l'heure de la date utc, vous devez spécifier le fuseau horaire utc.
Essayez le code suivant:
var m = moment().utcOffset(0);
m.set({hour:0,minute:0,second:0,millisecond:0})
m.toISOString()
m.format()
var time = moment().toDate(); // This will return a copy of the Date that the moment uses
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
time.setMilliseconds(0);
Vous n'avez pas montré comment vous créez la chaîne 2016-01-12T23:00:00.000Z
, Mais je suppose par l'intermédiaire de .format()
.
Quoi qu'il en soit, .set()
utilise votre fuseau horaire local, mais le Z
dans la chaîne de temps indique heure nulle , autrement appelé UTC.
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
Donc, je suppose que votre fuseau horaire local est à 23 heures de UTC?
réponse de saikumar a montré comment charger l'heure au format UTC, mais l'autre option consiste à utiliser un appel .format()
qui sort en utilisant votre fuseau horaire local, plutôt que l'heure UTC.
http://momentjs.com/docs/#/get-set/
http://momentjs.com/docs/#/displaying/format/