Moment.js unterscheiden sich zwischen UTC-Daten

Ich benutzemoments.js für die Arbeit mit Daten in Javascript. Alle Daten sind in UTC (oder sollten es sein).

Ich habe das folgende Datum (60 Minuten von der aktuellen Zeit):

<code>//Wed, 04 Apr 2012 21:09:16 GMT
to   = moment.utc().add('m', 60).toDate();
</code>

Jetzt möchte ich die Differenz in Sekunden zwischen diesem Datum und der aktuellen UTC-Datumszeit ermitteln.

<code>seconds = moment.utc().diff(to, 'seconds');
</code>

Dies kehrt zurück10800 anstatt3600Also 3 Stunden statt einer.

Irgendwelche Ideen, was ich falsch mache?

Vielen Dank!

BEARBEITEN:

Ich habe die Zeile auf aktualisiertseconds = moment().diff(to, 'seconds'); und es bekommt die richtigen Sekunden, aber es ist-3600 statt positiv.

BEARBEITEN:

Ich habe jetzt diese zwei Momentobjekte:

<code>{ _d: Thu, 05 Apr 2012 17:33:18 GMT, _isUTC: true }
{ _d: Thu, 05 Apr 2012 16:38:45 GMT, _isUTC: true }
</code>

d1 und d2.

Wenn ich es tued1.diff(d2, 'hours', true); das kehrt zurück4. Es hat definitiv etwas mit UTC zu tun, aber es scheint sosollte Arbeit.

Antworten auf die Frage(2)

https://github.com/timrwood/moment/issues/261

Verwenden Sie stattdessen Folgendes, um das Problem zu umgehen.

<code>var a = moment.utc().add('m', 60).toDate(),
    b = moment().diff(to, 'seconds'); // use moment() instead of moment.utc()
</code>

Auch wenn Sie das brauchentoString des Datums können Sie verwendenmoment().toString() wie es die gewickelten ProxiesDate().toString()

 timrwood02. Mai 2012, 21:52
Nur zu Ihrer Information, dies wurde in Version 1.6.0 behoben.
 Joaobrunoah17. Okt. 2017, 14:56
Der Fehler besteht immer noch, wenn es um die Sommerzeit geht. Beispiel: Differenz in Tagen zwischen dem 15.10.2017 und dem 22.10.2017 (UTC). Das erste Date ist nicht in der brasilianischen Sommerzeit, aber das zweite ist. Der Fix, den Sie oben vorgeschlagen haben, hat den Trick gemacht.

toDate(). Versuchen Sie, direkt mit dem Moment zu arbeiten (d. H. Ändern Sie ihn into = moment.utc().add('m', 60);).

 dzm04. Apr. 2012, 23:30
Hm, das 'to' ist wirklich ein Wert aus der Datenbank, der mit dem obigen Code erstellt wurde, also muss ich toDate () verwenden, um den String zum Speichern zu bringen.
 dzm05. Apr. 2012, 18:42
@Super Ich habe den Beitrag bearbeitet. Arbeiten mit Moment-Objekten, die UTC sind, wobei ähnliche Probleme auftreten.

Ihre Antwort auf die Frage