Es klingt wie Sie versuchen, den Benutzer eine UTC-basierte Datum und Uhrzeit auswählen zu lassen. Der beste Weg wäre also, den Picker im UTC-Modus arbeiten zu lassen, wenn er den Moment für den Anfang schafft. Ich bin mit diesem Datetime nicht vertraut, aber irgendwo intern vorausgesetzt, es ist so etwas wie diese:
var m = moment([year, month-1, day, hour, minute]);
Dann sollte stattdessen tun:
var m = moment.utc([year, month-1, day, hour, minute]);
(Die Variablen hier gezeigten kommen würden aus der Picker-Steuerung heraus.)
Idealerweise sollte die Picker-Steuerung eine Funktion zur Einstellung des UTC-Modus enthalten, damit diese intern ausgeführt werden kann, wenn Sie von Ihnen dazu aufgefordert werden.
Wenn es eine solche Funktion nicht hat, können Sie sich immer noch kompensieren. Leider können Sie nicht einfach .utc()
anrufen, da dies eine andere Zeit geben würde als die, die der Benutzer gewählt hat. Sie müssen also kompensieren, indem Sie die UTC-Zeit um den Offset des ursprünglichen Moments verschieben.
var m = // moment value from the picker
var result = moment(m).utc().add(m.utcOffset(), 'm');
Sie können dann format
anrufen oder was auch immer Sie wollen auf das Ergebnis. Beachten Sie, dass der ursprüngliche Moment geklont mit moment(m)
ist, so dass der Offset nicht verloren geht und der Wechsel zu UTC das interne Verhalten des Pickers nicht beeinträchtigt.
Beachten Sie auch, dass shifting wie dies ist in der Regel ein Hack, und wenn Sie falsch gemacht kann zu Fehlern führen. Hier ist es in Ordnung, denn der Moment ist bereits im UTC-Modus, wenn die Anpassung angewendet wird. Aber als allgemeine Lösung sollte eine Verlagerung vermieden werden. Die beste Option besteht darin, das Steuerelement zunächst in den UTC-Modus zu versetzen.
Könnten Sie bitte einen Code oder eine Geige bieten zu zeigen? Das ist ziemlich einfach mit dem Moment, aber ich habe keine Ahnung, welche APIs Sie in diesem datetimepicker-Steuerelement verwenden. –