2016-11-08 2 views
0

Ich habe eine Variable namens workFrom, die Zeit (Hh: mm) als String am FrontEnd (Angular JS) hat. Ich möchte dies in das Datumsformat konvertieren, bevor die Daten in MongoDB mit dem Standarddatum 01/01/1970 und dem Zeitpunkt von dem, was von WorkFrom gepostet wurde, gepostet werden. Wie mache ich es?Konvertieren von String nach DateTime in Knoten Js

Beispiel: workFrom: 11:40 sollte in 01.01.1970 11:40 konvertiert werden (entsprechend dem Standardformat des in MongoDB verwendeten Datums).

Vielen Dank im Voraus

+0

produzieren Sie können [Moment] (https://www.npmjs.com/package/moment) Paket zu analysieren und zu validieren Termine. – abhishekkannojia

+0

Ich bin ein Neuling für Node JS, also könntest du ausführlicher darüber sein, wie man @abhishekkannojia konvertiert – Vignesh

+1

Du brauchst keine Bibliothek: ''11: 40'.split (':'). Reduce ((h, m) => neues Datum (h * 3.6e6 + m * 6e4) .toISOString()) '. – RobG

Antwort

0

Lösung in vanila JS.

var input = '11:40'; 
 
var parts = input.split(':'); 
 
var minutes = parts[1]*60+ +parts[0]; 
 
var inputDate = new Date(minutes * 60 * 1000); 
 
console.log(inputDate);

Oder moment verwenden als abhishekkannojia schrieb.

+0

Ich denke, du brauchst 'Teile [0] * 60 + + Teile [1]' aber ansonsten großartig. – RobG

+0

Erster Operand 'Teile [0] * 60' ist die Nummer, dann wird der zweite Operand' Teile [1] 'in die Nummer – galkin

+1

umgewandelt Nein, wird es nicht. Während 'Teile [1] * 60 'eine Zahl zurückgibt, ist' Teile [0] 'eine Zeichenkette, also wird sie verkettet, nicht hinzugefügt. Und Sie haben die Indizes umgekehrt, Sie wollen 'Teile [0] * 60 ', usw. Diese zwei Fehler bedeuten, dass der Wert von * Minuten *" 240011 "' anstelle von '700' ist und das Ergebnis ist" "1970-06 -16T16: 11: 00.000Z "' statt '" 1970-01-01T11: 40: 00Z "'. ;-) – RobG

0
var d = new Date("01/01/1970 11:40:0:0"); 

Sie können es tun:

date="01/01/1970"; 
workFrom="11:40"; 
d = new Date(date +" "+workFrom); 
+0

Das Analysieren von Zeichenfolgen mit dem Date-Konstruktor (oder Date.parse, sie sind für das Parsen äquivalent) wird dringend empfohlen. – RobG

0

Ein einfacher Ansatz, wie das sein kann:

workFrom = "11:40"; 
time = new Date("01/01/1970" + " " + workFrom); 
console.log(time.getDate() +'/'+ time.getMonth() +'/'+ ime.getFullYear()+ ' '+ time.getHours() + ':' + time.getMinutes()); 
0

Mit Moment verwenden (was ich empfehlen, wenn Sie mit Datum/Uhrzeit handelt verwandten Probleme):

let workFrom = "11:40"; 
let workFromMoment = moment(workFrom,'hh:mm') 
let adjustedMoment = moment([1970,0,1]).hour(workFromMoment.hour()).minute(workFromMoment.minute()) 
let dateString = adjustedMoment.format('D/M/Y hh:mm')` 
console.log(dateString); 

Thi s Snippet, wird wiederum die Ausgabe von "1/1/1970 11:40"

Verwandte Themen