2010-07-16 3 views
7

J'essaie de trier une liste de dates, mais je suis aux prises avec des dates nulles qui ne sont pas traitées de manière cohérente.JavaScript Date.parse() et les dates nulles

Je besoin de quelque chose comme:

var date = Date.parse(dateString); 
if (!date) { 
    date = Date.MinValue; 
} 

mais je me bats pour trouver la syntaxe correcte. Merci


Mise à jour: Le bug est avéré être un problème différent. J'ai Datejs importé pour une utilisation dans une autre partie du projet, donc je n'avais pas réalisé que Datejs définit une méthode Date.parse() qui remplaçait la méthode JavaScript standard.

Quoi qu'il en soit, il s'avère que Datejs a un bug bizarre, ce qui signifie qu'il ne gère pas correctement les dates commençant par "A". Donc en fait mes dates nulles étaient ordonnées correctement, c'était juste les dates d'avril et d'août étaient alors mélangées avec eux.

La solution consiste à utiliser la méthode Datejs Date.parseExact qui vous permet de fournir une chaîne de format spécifique, voir here.

Répondre

9

parse() renvoie NaN sur une analyse impossible, alors qu'en est-il de just;

var date = Date.parse(dateString) || 0; 
4

Vous pouvez utiliser isNaN (date) pour vérifier la date non valide. Etes-vous sûr de vouloir utiliser "MinValue; à partir de Date? Je courais le js sur chrome et continuait à obtenir indéfini

+0

Personnellement, j'aime mieux ce test, plus agréable pour la lisibilité lors de la vérification 'if (! IsNaN (date))' que 'if (date! = 0)' – Keerigan

3

Si vous cherchez vraiment la comparaison d'un objet JS Date valide (qui est 'vide' ou unset mais donc par défaut 01 Jan, 1970) pour vérifier si elle est Falsey - vous pouvez utiliser:

var null_date = new Date(0); 

Cela va créer un objet date qui est fixé à l'horodatage minimum (zero'th) où date() commence à compter ... ce qui équivaut à un objet Date qui n'a jamais été défini

Questions connexes