2016-09-08 1 views
1

Hallo im Moment js mit dieser Zeichenfolge zu konvertieren 20:00 ich versucht:bisher Zeit konvertieren Stunde ohne Zugabe von +1

var a = moment("20:00", "HH:mm") 
console.log(a.format()) // 2016-09-08T20:00:00+01:00 

das Problem, wenn ich in mongodb lagern

2016-09-10T19:00:00.000Z 

sein Wen möchte ich zu speichern 2016-09-10T20:00:00.000Z

kann sowieso erklären, warum bitte?

+0

Mögliches Duplikat von [Moment.js: Format Datum in einer bestimmten Zeitzone] (http://stackoverflow.com/questions/15347589/moment-js-format-date-in-a-specific-timezone) –

+0

Es sieht aus Wie Moment versucht, die Zeit für Ihre Zeitzone zu formatieren. Befindest du dich in der Zeitzone UTC +1? –

+0

Sie müssen es mit einer bestimmten Zeitzone formatieren –

Antwort

0

Dieses es, wie es aussehen sollte:

var a = moment("20:00", "HH:mm") 
 
console.log(a.utcOffset('+0000').format())
<script src="http://momentjs.com/downloads/moment.min.js"></script>

Doe, dass Sie Zeitzonen verwenden, das Problem ist, wenn Sie das Datum erstellen.

MomentJS verwendet Ihre aktuelle Zeitzone automatisch.

Mongo speichert jedoch die Zeit wie in einer anderen Zeitzone.

Wenn Sie möchten, dass die beiden Zeichenfolgen auf die gleiche Weise formatiert werden, müssen Sie die Zeitzone festlegen.

+0

funktioniert nicht für mich:/ – Doe

+0

Bitte überprüfen Sie meine Bearbeitung. Da hast du die richtige Antwort, aber du hast vergessen, dass das OP '20: 00' in UTC will, nicht' 20: 00 + 01: 00', was '19: 00' UTC ist. – evolutionxbox

1

Wenn Sie sagen, dass Sie 2016-09-10T20:00:00.000Z speichern möchten, was Sie sagen, ist, dass Sie davon ausgehen, dass Ihr Datum und Uhrzeit UTC ist.

Um davon ausgehen, dass das Datum, das Sie ist ein UTC Wert parsen, verwenden moment.utc

var a = moment.utc("20:00", "HH:mm") 
console.log(a.format()) // 2016-09-08T20:00:00Z 

Beachten Sie, dass, wenn Sie eine Zeit ohne ein Datum analysieren, zur Zeit das aktuelle Datum annimmt. Dies ist möglicherweise nicht das gewünschte Verhalten.

Ich bin mir auch nicht sicher, ob Sie ein UTC-Datum (was Sie sagen wollen), oder ein lokales Datum ohne einen Offset-Indikator. Wenn Sie ein lokales Datum ohne eine Offset-Anzeige möchten, verwenden Sie einfach ein Format ohne Versatz:

moment.utc("20:00", "HH:mm").format('YYYY-MM-DDTHH:mm:ss.SSS') 
"2016-09-08T20:00:00.000" 

Wenn Sie mit lokalen Daten handelt, die keine Zeitzone Assoziation haben, empfehle ich moment.utc zu analysieren, wie Dadurch wird sichergestellt, dass die Zeit für die Sommerzeit in der aktuellen Zeitzone nicht berücksichtigt wird.

Weitere Informationen zum Analysieren von Datumsangaben in die Zeitzone oder den Offset, den Sie im Moment wünschen, finden Sie unter .

Verwandte Themen