Javascript Date(dateString) NaN zurück auf bestimmte server und browser
Ich bin mit der Javascript-Datum(string) - Konstruktor mit einem Datum-format "yyyy-mm-dd". Der Konstruktor funktioniert ganz gut in IE 9 und Firefox, es sei denn, die app läuft auf unserem Test-VM, die auf dem IIS ausgeführt wird. Wenn es auf der VM, die im IE 9 gibt 'NaN', aber immer noch normal funktioniert in Firefox.
var dateAsString = "2011-11-09";
var dateCreated = new Date(dateAsString);
Ich war unter der Annahme, dass der server nichts zu tun hatte mit client-side Javascript. Irgendwelche Vorschläge?
- Ziemlich sicher, dass der server nichts zu tun hat mit client-side Javascript als client (die person, die die Website besucht) ausgeführt wird, der code, nicht der server.
- Ich weiß, das ist, warum ich bin verwirrt von diesem.
- Überprüfen Sie den Dokument-Modus in der Entwickler-tools des IE (F12) auf beiden Servern. Ich vermute, dass Sie sich unterscheiden.
- gewinnt!!! Danke. Jetzt kann ich heute Nacht schlafen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schlage ich vor, Sie versuchen, eine zuverlässigere form der beim Parsen des Datums. Das Beispiel unten verwendet
setFullYear()
. Hat IE ein anderes Ergebnis mit dem code unten?Quelle: http://jibbering.com/faq/#parseDate
Und für diejenigen von uns, die wissen wollen wie zu ersetzen Bindestriche (aka Striche) mit Schrägstrichen:
Verwendet diese Funktion:
In meinem Fall ist es viel einfacher zu konvertieren, Schrägstriche, Bindestriche, um selektiv (nur dort, wo es gebraucht für die Funktion Date ()), als zum ersetzen des Datum-format überall in meinem code.
Hinweis: Sie wirklich brauchen, um zu definieren, eine separate "response" - variable und weisen Sie ihm den Wert des ersetzen-Vorgangs. Wenn nicht, wird der string unverändert zurückgegeben in Chrom. Das ist nicht ein riesiges problem, da Chrom nicht haben ein problem mit Bindestrich Datums-Zeichenketten zu beginnen. Aber trotzdem...
you really need to define a separate 'response' variable and assign it the value of the replace operation result. If you don't, the string is returned unaltered in Chrome.
was?Nur verwenden Schrägstriche anstelle von Bindestrichen, wenn Sie können.
EDIT: Erweitert Klärung...
Den ISO 8601 standard-format verwendet den Bindestrich, der als Datum-separator. Meine Antwort bedeutet nicht, Sie müssen nicht um standards. Sie können Schrägstriche verwendet werden, die nur für den Date-Konstruktor, falls erforderlich.
Es ist, weil der date-format. Für einige Grund, IE und Safari zu Schaden kommen, mit
yyyy-mm-dd
. Verwenden Sie ein anderes Datum-format, und Sie sollten alle gesetzt.Es ist hier die Rede:
http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari
localhost
oder Sie haben ein realistischeres domain-Namen, z.B.dev.example.com
. IE kann anders handeln, je nach der zone verbindet den Ort mit (Trusted / Intranet / Internet / Untrusted / My Computer).