2016-03-18 1 views
0

Erstens verwende ich den Bootstrap datetimepicker (http://eonasdan.github.io/bootstrap-datetimepicker/), der auf Momentjs ausgeführt wird.Wie erhalte ich den Wert in Englisch von einem momentjs-Objekt, wenn das Gebietsschema auf eine andere Sprache eingestellt ist?

Meine App ist mehrsprachig und umfasst asiatische Sprachen wie Japanisch, Chinesisch und Arabisch. Wenn das Gebietsschema auf andere Sprachen eingestellt ist, enthält das Format (z. B. am/pm) des Werts manchmal asiatische Zeichen. Dies führt zu Problemen, wenn ich den Wert in meiner Datenbank speichern und später abrufen möchte.

Mein Code sieht wie folgt aus:

$('#bookingTime').datetimepicker({ 
    "format": 'YYYY-MM-DD hh:mm A', 
    locale: " << The locale I'm setting >> ", 
    stepping: 30, 
    minDate: moment().millisecond(0).second(0).minute(0).hour(0), 
    maxDate: new Date(new Date().setYear(new Date().getFullYear() + 1)), 
    }); 
}); 

Zeit die Daten aus dem Objekt Ich erhalte den ‚_D‘ Wert auf dem Objekt Moment mit:

$('#bookingTime').data("DateTimePicker").date()._d.toString(); 

Aber ich dachte, es muss sei ein besserer, weniger "fettiger" Weg. Wie kann der Wert in Englisch ab einem Moment Objekt sein, wenn das Gebietsschema auf eine andere Sprache eingestellt ist?

+0

Speichern Sie das ISO-Datum/Uhrzeit. – Ilya

+0

Verwenden Sie keine '_d' oder andere interne Felder. –

Antwort

3

Ich glaube, Sie gerade anrufen möchten:

$('#bookingTime').data("DateTimePicker").date().format() 

Dies wird Ihnen das Datum als ISO8601 formatiert:

2016-03-18T15: 55: 48-05: 00

Dies ist wahrscheinlich die beste Möglichkeit, ein Datum für zukünftige Verwendung zu speichern, da es von jeder Kultur interpretiert werden kann.

Sie können auch Formatierungs-Token für Moment verwenden, um eine Vielzahl anderer Formate zu erhalten.

Wenn Sie es wirklich auf Englisch wollen, können Sie das Gebietsschema ändern. Ich würde wahrscheinlich zuerst kopieren, um unerwartete Nebenwirkungen dieser Änderung am Anfangsdatum zu vermeiden:

var a = $('#bookingTime').data("DateTimePicker").date().clone(); 
a.locale('en'); 
a.format('YYYY-MM-DD hh:mm A');//the date with english AM/PM 
+0

Danke, hat perfekt funktioniert. – dedles

Verwandte Themen