2012-10-02 4 views
3

J'utilise ceci pour vérifier si les entrées de date étaient moins de 7 jours à compter de la date d'aujourd'hui, il fonctionne dans tous les navigateurs sauf < IE9JavaScript Date de Undefined/NaN dans IE8

var today = new Date("<?=date("Y-m-d")?>"); //eg: 02-10-2012 
var arrDate = new Date(startYear+"-"+startMonth+"-"+startDay); //eg: 05-10-2012 
var diff = new Date(arrDate - today); 
var days = diff/1000/60/60/24; 
if(days<7) alert("less than 7 days."); 

je ne reçois pas d'erreur dans la Console IE (F12) mais days met au point comme NaN, est-ce que quelqu'un sait quel est le problème avec IE?

+1

Tout comme une note, essayez d'éviter d'utiliser les balises courtes de PHP. – BenM

+0

J'ai essayé votre code (en supprimant le php et les concaténations variables en remplaçant par la chaîne de données affichée) et devinez quoi. Firefox donne un objet Date invalide. L'objet Date a un constructeur qui nécessite Date (année, mois, jour, [etc]. Je note également que vous utilisez la division contre l'objet Date diff ... ne l'opérateur fournissent javascript surcharge à la date? –

Répondre

14

IE 8 (et ci-dessous) ne reconnaît pas les chaînes de date dans le format y-m-d.

Je vous recommande d'utiliser y/m/d, comme cela est reconnu par tous les navigateurs.


PS: Votre commentaire est erroné.

new Date("<?=date("Y-m-d")?>"); //eg: 02-10-2012 

devrait lire

new Date("<?=date("Y-m-d")?>"); //eg: 2012-10-02 

Sur une note générale, vous ne devriez jamais commenter l'évidence pour éviter les commentaires qui ne reflètent pas le code. date("Y-m-d") est assez évident, il n'a pas besoin de commentaire du tout.

+0

qui fonctionne merci –

+0

oh oui tu as raison merci –