Javascript计算两个日期yy-mm-dd之间的差异

时间:2011-10-05 21:26:35

标签: javascript date datediff

我已经阅读了很多关于在javascript中计算日期差异的文章和问题,但我找不到它们正在寻找的格式。

我不需要几小时,几分钟或相信或不相信毫秒......我只需要几天。我确定有一天会在同一天或另一天发生。

日期格式为2010-10-05

我尝试了这个,但我得到的只是NaN:

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

5 个答案:

答案 0 :(得分:4)

我是否正确理解您实际上并不需要知道这两天相隔多少天,您只需要知道它们是否是相同的日期而不是更晚的日期?在这种情况下,常规字符串比较可以告诉您,如果您始终使用格式'yyyy-mm-dd',则需要两位数的月份和两位数日;例如,'2010-10-05'< '2010-10-16'。

答案 1 :(得分:2)

在Firefox中运行良好:

JSFiddle

var diff,
  aDay = 86400000,
  start_date = "2010-10-05",
  end_date = "2010-10-15";

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

console.log(diff)

//but perhaps this is safer:

diff = Math.floor(
  (
    Date.parse(
      end_date.replace(/-/g, '\/')
    ) - Date.parse(
      start_date.replace(/-/g, '\/')
    )
  ) / aDay);
console.log(diff)

答案 2 :(得分: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小时内,我想这不是你想要的,因为你的日期没有时间戳......

答案 3 :(得分:0)

我希望这会对你有所帮助

    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);

答案 4 :(得分:0)

只是简单一点,删除前10个用''替换' - '然后取'end_date-开始日期。

这是一种丑陋的方式,但很容易,所以它适用于任何语言;)