2011-10-05 91 views
0

我已经阅读了很多关于计算javascript日期差异的文章和问题,但是我找不到它们的格式。JavaScript计算两个日期之间的差异yy-mm-dd

我不需要小时,分钟或相信它或毫秒......我只需要几天。我正在检查以确保有一天发生在同一天或之后。

日期格式2010-10-05

我尝试这样做,但我得到的是楠:

var diff = Math.floor((Date.parse(end_date) - Date.parse(start_date))/86400000); 

回答

4

我理解你确实不需要知道多少天除了这两天,你只需要知道他们是否是同一日期,如果是晚一点的话。在这种情况下,经常使用字符串比较可以告诉您,只要您始终使用格式“yyyy-mm-dd”,两位数的月份和两位数的天数;例如'2010-10-05'<'2010-10-16'。

+0

男人,我只是如此习惯JavaScript是如此过分complecated我甚至不期待一个简单的答案。谢谢! – Oseer

+0

不客气! – ruakh

0

你首先要分析的日期。但建在Date.parse可能无法识别它。起始于以下:

var dateStr = "2010-10-05"; 
var regex = /(\d{4})-(\d{2})-(\d{2})/.exec(dateStr); 
var date = new Date(regex[1], regex[2] - 1, regex[3]); //Tue Oct 05 2010 00:00:00 GMT+0200 (CEST) 

Date对象的两个实例,你可以反正你喜欢比较。然而,你的条件检查是否有两个日期是在24小时内,我想这不是你想要的,因为你的日期没有时间戳...

+0

感谢您的帮助。 – Oseer

0

我希望这会帮助你在Firefox

t1="2010-12-20"; //date1 
    t2="2010-12-30"; //date2 

    var one_day=1000*60*60*24; 

    var x=t1.split("-");  
    var y=t2.split("-"); 

    var date1=new Date(x[0],(x[1]-1),x[2]); 
    var date2=new Date(y[0],(y[1]-1),y[2]); 

    var month1=x[1]-1; 
    var month2=y[1]-1; 

    _Diff=Math.ceil((date2.getTime()-date1.getTime())/(one_day)); 

alert(_Diff); 
1

正常工作:

DEMO

var start_date = "2010-10-05" 
var end_date = "2010-10-15" 
var diff = Math.floor((Date.parse(end_date) - Date.parse(start_date))/86400000); 
alert(diff) 

but perhaps this is safer: 

var diff = Math.floor(
    (
     Date.parse(
      end_date.replace(/-/g,'\/') 
    ) - Date.parse(
      start_date.replace(/-/g,'\/') 
    )    
    )/86400000); 
alert(diff) 
0

简简单单就,切出的第一10chars代替 ' - ' 与' '然后以end_date开始日期。

这是一个丑陋的方式来做到这一点,但是很容易,所以它在任何语言的作品;)

相关问题