2016-06-02 5 views
1

Ich benutze angularJs und Moment js. Ich habe eine Textbox, dieMoment js nicht finden die Zeit

12:00 PM

auf die Funktion (apptime) zum Beispiel sendet - ich dann

var newtime = moment(apptime,'hh:mm:ss'); 

und das ist, was die Konsole Ausgänge:

Thu Jan 01 1970 12:00:00 GMT+0000 (GMT Standard Time) 

so ist es die Zeit in Ordnung, ich sehe 12:00:00 dort ..

dann (wegen der Datenbankstruktur) Ich möchte es so konvertieren:

1899-12-30 12:00:00

so dass ich dies tun:

console.log("1899-12-30 " + newtime.format('hh:mm:ss')); 

und egal, was das Datum ist, ist die Antwort immer

1899-12-30 01:00:00

Warum denkt es 01 ist die Stunde?

+0

Könnte es ein Problem mit der Sommerzeit sein? – ManoDestra

+0

Egal zu welcher Zeit ich gebe die Stunde als 1 zurück, die Minuten funktionieren gut. –

+0

Seltsam, scheint in meiner Konsole "1899-12-30" + Moment ('12: 00 Uhr ',' hh: mm: ss ') zu funktionieren. Format (' hh: mm: ss ')' gibt mir '1899-12-30 12: 00: 00' – phuzi

Antwort

1

Es sollte in UTC-Zeit konvertieren.

Wechsel:

console.log("1899-12-30 " + newtime.format('hh:mm:ss')); 

An:

console.log("1899-12-30 " + moment(newtime).utc().format('hh:mm:ss')); 
+0

Jetzt seine Ausgabe 12 egal welche Zeit ich eingeben –

+0

Dies gibt Ihnen eine andere Zeit als die eingegebene Zeit, je nach Sommerzeit/Zeitzone. Das ist nicht unbedingt das, was du willst, denke ich. – ManoDestra

0

Versuchen Sie dies. Ihr Eingabeformat für moment.js ist falsch.

var apptime = '12:00 PM'; 
var newtime = moment(apptime,'hh:mm a'); 
console.log(apptime); 
console.log(newtime); 
console.log("1899-12-30 " + newtime.format('HH:mm:ss')); 

I geändert auch das Ausgabeformat Militär Zeit zu sein, aber Sie können die zu grundlegendem AM/PM ändern zurück, wenn Sie es wünschen.

Verwandte Themen