2016-04-07 15 views
3

Ich verwende HTML5 Eingabedatum und Eingabezeit für die ionische Entwicklung. Standardmäßig bindet es als ISO-Datumszeichenfolge und ändert sich in die UTC-Datumszeit. Es scheint falsch zu mir als wenn Benutzer das Datum 2016-06-06 wählen, kann es 2016-06-07 oder 2016-06-05 je nach Zeitzone versetzt werden. Ähnliche Situation für den Eingabetyp = Zeit.HTML-Eingabe Typ Datum und Uhrzeit ohne Zeitzone Offset

Was meine Absicht ist, das Datum in der ISO-Zeichenkette so zu machen, dass es vom ausgewählten Benutzer bleibt, anstatt es mit Zeitzonenunterschieden auszugleichen.

So etwas wie Eingabe datetime-local aber scheint, dass datetime-local nicht vom mobilen Gerät unterstützt wird.

Ich finde etwas wie Eingangstyp = "date-local" oder "time-local".

+0

Sie können die Offsets des Datums vor dem Verzehr selbst anpassen, so dass der Benutzer ISO-Daten verwendet, aber vorgibt, dass sie lokal sind. – dandavis

Antwort

0

Javascript Daten sind immer UTC, aber Sie können auch die lokalen Werte erhalten, wie hier gezeigt: http://www.w3schools.com/jsref/jsref_obj_date.asp

getUTCHours() Gibt die Stunde, nach Weltzeit (0-23) getHours() Returns die Stunde (von 0-23)

Der erste wird immer von dem, was eingegeben wurde, in UTC übersetzt. Der zweite verwendet den Zeitzonenversatz, um zu berechnen, was zurückgegeben werden soll.

1

Zunächst ist es interessant, dass type = "datetime" removed from the HTML5 standard ist und stattdessen nur "datetime-local" existiert, aber es scheint, dass nicht jeder mobile Browser es implementiert. Für type = "date" gibt es keine Zeitkomponente. Verwenden Sie also einfach das UTC-Datum. Es stimmt, ein UTC-Datum d lokale Umwandlung ist irgendwie lächerlich:

  • new Date (d.toLocaleDateString())

oder

  • d.setMinutes(d.getMinutes()+d.getTimezoneOffset())

oder

  • new Date(+d+d.getTimezoneOffset()*60000)

aber was können Sie tun?

Verwandte Themen