2010-07-16 71 views
7

我想排序的日期列表,但我努力与空的日期,这是不一致处理。JavaScript Date.parse()和空日期

所以,我需要这样的东西:

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

,但我在努力寻找正确的语法。由于


更新:虫子竟然是一个不同的问题。我有Datejs用于项目的另一部分,所以我没有意识到Datejs定义了一个覆盖标准JavaScript方法的Date.parse()方法。

无论如何,事实证明Datejs有一个奇怪的错误,这意味着它不能正确处理以“A”开头的日期。所以实际上我的空日期被正确地排序,只是四月和八月的日期被混淆了。

修复方法是使用Datejs Date.parseExact方法,该方法允许您提供特定的格式字符串,请参阅here

回答

9

parse()在不可能的语法分析中返回NaN,所以怎么样;

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

您可以使用isNaN(日期)来检查无效日期。您确定要使用“MinValue;从日期?我在铬上运行js并一直未定义。

+0

个人喜欢这个测试更好,检查时更好的可读性 (日期!= 0)'if(!isNaN(date))' '如果(日期!= 0)' ' – Keerigan 2012-08-16 19:01:38

3

如果您真的在寻找比较有效的JS Date对象(它是'空'或取消,但因此默认1970年1月1日),以测试它是否是falsey - 您可以使用:

var null_date = new Date(0); 

这将创建一个设置为最小(第零)的时间戳的日期对象,其中日期()开始计数...这与从未设置的日期对象等价。