2016-10-11 1 views
-1

Ich habe ein Datum im UK-Format "TT/MM/JJJJ HH: mm" und ich möchte ein neues Datum mit Javascript erstellen. Ich versuche Folgendes mit moment.js, aber es erkennt nicht den Zeitteil und fügt einfach die aktuelle Uhrzeit hinzu.Javascript - Erstellen Sie ein neues Datum mit einem UK-Format und moment.js

var myDate = "11/10/2016 09:00" 

// The toDate() is equivalent to the javascript new Date() function 
var newDate = moment(myDate, "YYYY-MM-DD HH:mm").val()).toDate(); 

// output: 
// 20161011T091406Z 
// Tue Oct 11 2016 09:14:06 GMT+0100 

Wie Sie sehen, hat sich der Zeitteil auf die Zeit geändert, zu der das Skript ausgeführt wird.

+2

Ihr Datumsformat erscheint nicht auf alle Eingaben übereinstimmen - das ist beabsichtigt? – jonrsharpe

+0

Wie vorgeschlagen, müssen Sie Ihr Format auf das Format korrigieren, das Ihrer Eingabe entspricht. Sie haben: 'var newDate = Moment (myDate," TT/MM/JJJJ HH: mm "). ToDate();' – VincenzoC

+0

@jonrsharpe und VincenzoC beide von Ihnen sind falsch. Ich verwende Moment.js, um das vorhandene Format zu einem Javascript-ISO-Format zu analysieren. Liest den Moment docs: http://momentjs.com/docs/#/parsing/string-format/ – adam78

Antwort

1

Figured es selbst heraus durch die folgenden Aktionen ausführen:

var myDate = "11/10/2016 09:00" 

myDate = moment(myDate, "DD/MM/YYYY HH:mm").toISOString(); 

var newDate = moment(myDate).toDate(); 
+2

Sie analysieren eine Zeichenfolge zu einem Momentobjekt, das dann als Zeichenfolge ausgegeben wird, die Sie dann erneut zu einem Momentobjekt analysieren und * toDate * aufrufen, was ineffizient ist. Versuchen Sie 'moment (myDate," TT/MM/JJJJ HH: mm "). ToDate()' wie VincenzoC vorgeschlagen hat. Oder schreiben Sie eine 2-Linien-Funktion, um das Gleiche zu tun. – RobG

Verwandte Themen