Javascript Webkit日期解析

Javascript Webkit日期解析,javascript,parsing,webkit,date,jquery-ui-datepicker,Javascript,Parsing,Webkit,Date,Jquery Ui Datepicker,可能重复: 我有一个简单的函数来计算从日期到日期之间的天数 function checkDias(){ str1 = $('#salida').val(); str2 = $('#regreso').val(); difference = Math.floor(( Date.parse(str2) - Date.parse(str1) ) / 86400000); if (diferencia > 0) { } else { console

可能重复:

我有一个简单的函数来计算从日期到日期之间的天数

function checkDias(){
    str1 = $('#salida').val();
    str2 = $('#regreso').val();
    difference = Math.floor(( Date.parse(str2) - Date.parse(str1) ) / 86400000);
    if (diferencia > 0) { } else {
        console.log(difference); console.log(str1); console.log(str2);
       // alert the user....
    }
}
我这样做是为了检查第二个日期是否在第一个日期之后。在Firefox中,这可以正常工作,但在Webkit(Safari或Chrome)中则不行。str1和str2很好地登录到控制台,但是Webkit中的差异var返回NaN,而FF中的差异var返回int值

知道为什么会这样吗?我使用jQueryUI日期小部件获取和YYYY-MM-DD格式,但我认为这与它无关


谢谢

我认为Date.parse方法不一致(不同浏览器、JS引擎版本等的实际格式不同)。我习惯使用以下方法在JavaScript中对日期进行各种操作(例如比较):

  • 以某种方式获取日期的组成部分(在本例中,您可以将字符串按“-”分割)
  • 使用上一步中的组件构造日期
  • 使用getTime()方法比较日期的时间戳
  • 代码如下:

    var d1Parts = s1.split('-'),
        d2Parts = s2.split('-'),
        d1 = new Date(d1Parts[0], d1Parts[1]-1, d1Parts[2]),
        d2 = new Date(d2Parts[0], d2Parts[1]-1, d2Parts[2]);
    
    if ( d1.getTime() < d2.getTime() ) {
        console.log('the first date is before the second');
    }
    
    var d1Parts=s1.split('-'),
    d2Parts=s2.拆分('-'),
    d1=新日期(d1Parts[0],d1Parts[1]-1,d1Parts[2]),
    d2=新日期(d2Parts[0],d2Parts[1]-1,d2Parts[2]);
    if(d1.getTime()
    这个小函数修复了Webkit和IE的Date.parse:


    我测试了它,现在Webkit和IE按照预期解析了日期

    请参阅:在调用
    日期
    构造函数时,您需要在月份部分减去1,而不是相加(月份是以零为基础的)。另外,为了比较时间戳,您不需要通过比较
    if(d1
    the
    来显式调用
    getTime
    方法,Christian,谢谢您的评论。