2017-06-01 1 views
0

Wenn Moment.js mit den end of einen Tag zu bekommen, gibt es 22: 59: 59.999Z:Warum endet Moment.js Tag um 22: 59: 59.999Z?

moment('2013-W06-5').endOf('day') // 2013-02-08T22:59:59.999Z 

http://plnkr.co/edit/nS6o5F See.

Kann mir bitte jemand erklären, warum der Tag nicht bei 23: 59: 59.999Z endet?

Ich denke nicht Moment.js behandelt es falsch. Vielleicht ist es etwas über die Sommerzeit (aus dem Deutschen)?

+0

Aus den Dokumenten, [ 'endOf'] (http://momentjs.com/docs/#/manipulating/end-of /) setze den Moment auf '23: 59: 59.999', ich glaube nicht, dass es ein Fehler ist, wahrscheinlich etwas in deinem Code, du musst es teilen, damit wir dir weiterhelfen können. – VincenzoC

+0

Ich denke auch nicht, dass es ein Fehler ist. Quellcode und Link zu Plunker zum ursprünglichen Beitrag hinzugefügt. – Sommereder

+0

Das Problem ist die Art, wie Sie den Wert in Ihrer Winkelansicht anzeigen. Konvertiere Moment-Objekte in Zeichenfolgen mit ['format()'] (http://momentjs.com/docs/#/displaying/format/) in deinem Controller oder verwende [angle-moment] (https://github.com/ Urish/Winkel-Moment) in Ihrer Sicht. – VincenzoC

Antwort

0

endOf ist Zeitzone bewusst.

Verwenden .utc() und Sie bekommen, was Sie brauchen:

$scope.output = moment('2013-W06-5').utc().endOf('day'); 
=> "2013-02-08T23:59:59.999Z" 

http://plnkr.co/edit/BgcBpRmldQL7po4W4vFv?p=preview

+0

OP fragte, warum die 23 nicht angezeigt wurde. Die Antwort ist, dass der Moment standardmäßig in der lokalen Zeit analysiert und angezeigt wird. Also für mich, 22: 59: 59.999Z als 06: 59: 59.999Z angezeigt. – Juan

+0

Würdest du eine Antwort mit format() oder angular-moment schreiben, die dem OP andere Alternativen zeigen könnte? – Juan

+1

Diese Antwort war perfekt. Die Frage war nicht Angular - ich habe es nur in Plunker benutzt. – Sommereder

Verwandte Themen