2016-11-11 1 views
1

Das in js mein Code:Konvertieren von String Moment gibt falsche Jahr

var x = "2017-1-2"; 
var y = moment(x, "yyyy-MM-DD") 

Und wenn ich y in der Konsole sehen das ist, was es ist:

enter image description here

Wie Sie sehen können Das _d hat den richtigen Tag und Monat, aber das falsche Jahr. Warum passiert das und wie kann man es reparieren? Ich verwende diesen Wert, um ihn über Ajax an den Server zu senden und das falsche Jahr wird gesendet.

+0

habe ich vorher noch nie mit Moment.js gespielt, aber unter der Annahme, '' moment'' ist ein Konstruktor, würden Sie das '' new'' Schlüsselwort nicht verwenden? – Crowes

+0

@JoshCrowe Nein, um ein neues Moment-Objekt zu erstellen, brauchst du kein neues Schlüsselwort :) –

+1

Ah, es ist eine Funktion mit einer Rückgabe, kein Konstruktor. Erwischt. – Crowes

Antwort

1

Verwenden Sie stattdessen Großbuchstaben YYYY. Es wird in der docs erwähnt. Vergessen Sie auch nicht, dass die Konstruktion mit moment() das Datum als lokales Datum behandelt und dann in UTC umrechnet. Wenn Sie das Datum als UTC behandeln möchten, können Sie moment.utc() verwenden.

In meiner Zeitzone (GMT + 7) zeigt der folgende Code "2017-01-01T17:00:00.000Z".

var x = "2017-1-2"; 
 
var y = moment(x, "YYYY-MM-DD") 
 
console.log(y);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>

Verwandte Themen