Javascript JSON Date d'analyser dans IE7/IE8 renvoie NaN
Je suis de l'analyse d'une date à partir d'un JSON cas de rachat, mais la date de la montre "NaN" dans IE7/8:
//Variable from JSON feed (using JQuery's $.getJSON)
var start_time = '2012-06-24T17:00:00-07:00';
//How I'm currently extracting the Month & Day
var d = new Date(start_time);
var month = d.getMonth();
var day = d.getDate();
document.write(month+'/'+day);//"6/24" in most browsers, "Nan/Nan" in IE7/8
Ce que je fais mal? Merci!
- il n'est pas pris en charge dans IE7/8. L'utilisation de ms depuis l'époque ou d'une cale d'épaisseur.
- Je vous recommande fortement de l'aide DateJS ici...
- Voir aussi: Qui des navigateurs prennent en charge l'analyse de la norme ISO-8601 Chaîne de Date à Date.analyser?
Vous devez vous connecter pour publier un commentaire.
Dans les navigateurs plus anciens, vous pouvez écrire une fonction qui va analyser la chaîne pour vous.
Celle-ci crée une Date.fromISO méthode - si le navigateur peut nativement obtenir la date exacte à partir d'un ISO de la chaîne, la méthode native est utilisée.
Certains navigateurs l'ai eu en partie raison, mais il est revenu le mauvais fuseau horaire, il suffit donc de vérifier NaN ne peut pas faire.
Polyfill:
Résultat:
Pour ie7/8 j'ai juste fait:
Le présent document remplace toutes les occurrences de "-" par "/", marqueur de temps "T" avec un espace et remplace le fuseau horaire de l'information avec un IE-chaîne conviviale qui permet IE7/8 pour analyser les Dates de Chaînes correctement. Résolu tous les problèmes pour moi.
new Date('2013/01/01')
dans Chrome et IE8. Le bon seraitnew Date('2013-01-01Z)
(note Z à la fin).Voir RobG post à Résultat de la méthode toJSON() sur une date est différente entre IE8 et IE9+.
Ci-dessous la fonction a fonctionné pour moi sous IE 8 et ci-dessous.
Vous pouvez tester comme ci-dessous:
00.000Z
format de l'horodatage, la-07:00
dans la question coutume de travail.00.000Z
Je suggère http://momentjs.com/ pour la croix-navigateur date de problèmes.
@gio Merci pour la suggestion Moment.js. Cette petite bibliothèque de vraiment l'aide à la négociation avec les dates et JavaScript.
Moment.js résolu le problème décrit dans la question d'origine que j'ai été aussi avoir. IE8 a été d'afficher JSON ISO dates NaN quand analysée dans une nouvelle Date() de l'objet.
Solution rapide (inclure moment.js dans votre page, ou de copier le code dans votre js fonctions comprennent)
Si vous avez juste besoin d'afficher une date sur votre page, chargé à partir d'un JSON de date ISO, ce faire:
ou
Si vous devez avoir une Date() de l'objet (pour une utilisation avec des Composants jQuery), effectuez les opérations suivantes afin de réussir à remplir votre JSON fourni de date ISO. (Cela suppose que vous êtes déjà à l'intérieur de la fonction de traitement de vos données JSON.)