我已经阅读了很多关于在javascript中计算日期差异的文章和问题,但我找不到它们正在寻找的格式。
我不需要几小时,几分钟或相信或不相信毫秒......我只需要几天。我确定有一天会在同一天或另一天发生。
日期格式为2010-10-05
我尝试了这个,但我得到的只是NaN:
var diff = Math.floor(( Date.parse(end_date) - Date.parse(start_date) ) / 86400000);
答案 0 :(得分:4)
我是否正确理解您实际上并不需要知道这两天相隔多少天,您只需要知道它们是否是相同的日期而不是更晚的日期?在这种情况下,常规字符串比较可以告诉您,如果您始终使用格式'yyyy-mm-dd',则需要两位数的月份和两位数日;例如,'2010-10-05'< '2010-10-16'。
答案 1 :(得分:2)
在Firefox中运行良好:
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-开始日期。
这是一种丑陋的方式,但很容易,所以它适用于任何语言;)