Javascript Date(dateString) renvoie NaN spécifiques sur le serveur et le navigateur
Je suis en utilisant le Javascript Date(string) constructeur avec une date au format "aaaa-mm-jj". Le constructeur fonctionne très bien sous IE 9 et Firefox sauf si l'application est en cours d'exécution sur nos tests VM qui exécute IIS. Si c'est sur la machine virtuelle, dans IE 9 il renvoie 'NaN', mais fonctionne encore normalement dans Firefox.
var dateAsString = "2011-11-09";
var dateCreated = new Date(dateAsString);
J'étais sous l'hypothèse que le serveur n'avait rien à voir avec Javascript côté client. Des suggestions?
Assez sûr que le serveur n'a rien à voir avec Javascript côté client que le client (la personne qui visite le site) exécute le code, pas le serveur.
Je sais, c'est pourquoi je suis confus par ce.
Vérifiez le mode de document dans les outils de développement d'IE (F12) sur les deux serveurs. Je soupçonne qu'ils diffèrent.
victoires! Merci. Maintenant, je peux dormir ce soir!
Je sais, c'est pourquoi je suis confus par ce.
Vérifiez le mode de document dans les outils de développement d'IE (F12) sur les deux serveurs. Je soupçonne qu'ils diffèrent.
victoires! Merci. Maintenant, je peux dormir ce soir!
OriginalL'auteur Gagege | 2011-11-11
Vous devez vous connecter pour publier un commentaire.
Je suggère d'essayer un moyen plus fiable de la date de l'analyse. L'exemple ci-dessous utilise
setFullYear()
. Est-ce que IE produire un résultat différent avec le code ci-dessous?Source: http://jibbering.com/faq/#parseDate
J'ai eu une date qui comprenait également l'heure et la zone (nécessaire seulement de la date). J'ai édité votre regex sur la ligne 2 et supprimé les deux ^ et $. Sinon, a travaillé comme un charme.
OriginalL'auteur James Hill
Et pour ceux d'entre nous qui veulent savoir comment pour remplacer les tirets (aka tirets) avec des barres obliques:
Qui utilise cette fonction:
Dans mon cas, c'est beaucoup plus facile de convertir des traits d'union pour les barres obliques de manière sélective (seulement là où c'est nécessaire pour la fonction Date ()) que de remplacer le format de la date partout dans mon code.
Remarque: vous avez vraiment besoin de définir une ğ réponse ğ une variable et lui assigner la valeur de l'opération de remplacement résultat. Si vous ne le faites pas, la chaîne renvoyée est inchangée dans Chrome. Ce n'est pas un énorme problème, étant donné que Chrome n'a pas un problème avec un trait d'union date de cordes pour commencer. Mais encore...
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.
quoi?OriginalL'auteur Wytze
Juste utiliser des barres obliques à la place des tirets si vous le pouvez.
EDIT: plus d'éclaircissements...
La ISO 8601 format standard utilise le tiret comme séparateur de date. Ma réponse ne signifie pas que vous n'avez pas besoin de suivre les normes. Vous pouvez utiliser des barres obliques seulement pour le constructeur de Date si nécessaire.
Oui tous les faire: jsfiddle.net/AwuPn/1
C'est génial, merci!
Fonctionne comme un charme! 🙂
OriginalL'auteur Lee Kowalkowski
C'est à cause du format de la date. Pour une raison quelconque, IE et Safari trébucher avec
yyyy-mm-dd
. Utiliser un autre format de date et vous devriez être tous ensemble.On en parle ici:
http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari
Ne le serveur d'une autre version d'internet explorer installée?
Nope, à deux onglets ouverts dans la même IE 9. Même code JS, des comportements différents.
Êtes-vous à l'aide de
localhost
ou avez-vous une vision plus réaliste de nom de domaine, par exempledev.example.com
. IE peut agir différemment en fonction de la zone, il associe le site avec (Confiance / Internet / Intranet / non approuvé / Mon Ordinateur).Ce serait plus logique, mais il s'avère que le document "mode" dans IE9 a été mis à IE7 pour l'un des serveurs.
OriginalL'auteur James Johnson