Ich stehe vor einem Problem, das versucht, moment.js
für den Umgang mit Zeitversätzen zu verwenden.Aktualisiere Zeitverschiebung mit Moment(). UtcOffset()
sammle ich in einem versteckten Eingang der lokalen Benutzerzeitversatz:
<script type="text/javascript">
$(document).ready(function() {
$('input#timeoffset').val(moment().utcOffset());
});
</script>
Der Offset korrekt gespeichert wird (in meinem Fall sein Wert -240). Später auf der Serverseite (die UTC-Zeit läuft) Ich versuche, einige db zu aktualisieren gespeichert utcDate tun so etwas wie:
var userDate = moment(utcDate).utcOffset(offset)
Mein Problem ist folgendes: , wenn ich meinen Code ausführen, wie oben beschrieben ich keine Effekte erhalten :
utcDate: 20151001 012421 +0000
userDate: 20151001 012421 +0000
Wenn ich den Offset-Zeichen Flip ich:
utcDate: 20151001 012421 +0000
userDate: 20151001 052421 +0400
ich eindeutig falsch, etwas zu tun habe (auch wenn meine Erwartung war, dass die erste Version korrekt war), Sie haben keine Andeutung?
Auf Client-Seite Ich bin moment.js v2.10.6, während auf der serverseitigen Moment-timezone.js v0.4.0 und moment.js v2.10.6
Und was machen Sie mit 'userDate', nachdem Sie den Offset angewendet haben? Wahrscheinlich rufen Sie 'toDate',' valueOf', 'unix' oder andere Methoden auf, die eher die Instant- als die Wall-Zeit widerspiegeln. –
Denken Sie auch an "Zeitzone! = Offset".Wenn Sie den * aktuellen * Offset des Benutzers speichern und ihn später auf einen beliebigen Zeitpunkt anwenden, ist dies möglicherweise der falsche Offset für diese Zeit. Zeitzonen können Offsets für die Sommerzeit und aus verschiedenen anderen Gründen ändern. –
@MattJohnson eigentlich ich nur '.format (...)', um die Ergebnisse auszudrucken. Die Ergebnisse, die ich oben berichtet habe, werden gedruckt: 'console.log ('utcDate:' + moment (utcDate) .format ('JJJJMMTT HHmmss ZZ')); console.log ('userDate:' + Moment (UtcDate) .utcOffset (Offset) .format ('JJJJMMTT HHmmss ZZ')); '. Das 'utcDate' ist ohne Offset. – Pierluigi