Ich habe eine zwei Stränge 2017-03-15
(date
) und 12:26
(time
). Ich möchte ein lokalisiertes Datumsobjekt daraus erstellen, ohne eine Bibliothek zu verwenden.Create date from string
Daran erinnernd, dass hier jetzt ist: Tue Mar 14 2017 12:26:33 GMT+0800 (AWST)
, wenn ich es tue:
new Date(date + 'T' + time)
ich das falsche Ergebnis wie das Datum UTC gilt:
Wed Mar 15 2017 20:26:00 GMT+0800 (AWST)
Wenn ich einen Raum nutzen:
new Date(date + ' ' + time)
Das Ergebnis ist korrekt:
Wed Mar 15 2017 12:26:00 GMT+0800 (AWST)
Dies funktioniert jedoch NICHT mit Safari (nicht ohne T). Safari wird tatsächlich einen Fehler (!) Auslösen.
Ich weiß, dass das Parsen von Strings als Datum von der Implementierung abhängt. Also, der einzige Weg, es "richtig" zu tun wäre:
var timeSplit = time.split(':');
var dateSplit = date.split('-');
new Date(dateSplit[0], dateSplit[1] - 1, dateSplit[2], timeSplit[ 0 ], timeSplit[ 1 ])
Aber es ist nur. Damit. Hässlich. Gibt es eine bessere Lösung, die für alle Browser funktioniert?
Nicht so hässlich. Stell es einfach in eine Funktion und du bist gut zu gehen. – Ryan
Mögliche dupe - [__Ungültiges Datum in Safari__] (http://stackoverflow.com/questions/4310953/invalid-date-in-safari) – Rayon