Javascript ISO8601日期格式中两个日期之间的天数

Javascript ISO8601日期格式中两个日期之间的天数,javascript,jquery,date,Javascript,Jquery,Date,我想和你做同样的事 但是我想在这个日期格式上做同样的事情:2000-12-31 function daysBetween(date1String, date2String){ var d1 = new Date(date1String); var d2 = new Date(date2String); return (d2-d1)/(1000*3600*24); } console.log( daysBetween('2000-12-31', '2005-05-04') );

我想和你做同样的事

但是我想在这个日期格式上做同样的事情:
2000-12-31

function daysBetween(date1String, date2String){
  var d1 = new Date(date1String);
  var d2 = new Date(date2String);
  return (d2-d1)/(1000*3600*24);
}

console.log( daysBetween('2000-12-31', '2005-05-04') );  //-> 1585

ISO8601日期字符串由JavaScript直接识别。不需要自己解析它们。

好吧,它不是jQuery,但同样容易使用。退房可以分析日期、差异等信息。

试试这个

var toDate = "2000-12-31";
var fromDate = "2000-10-30";
var diff =  Math.floor(( Date.parse(toDate) - Date.parse(fromDate) ) / 86400000);

如果您已经用更多的赞成票检查了答案,而不是您提供的链接上的标记答案,您就不会问这个问题。:)

这里的其他解决方案没有考虑时区信息(如果您想要的话,这很好) 但我遇到了这样一个问题:
我有两次约会: 2012年3月1日星期四00:00:00 GMT+01002012年3月31日星期六00:00:00 GMT+0200 这将给你29.95833天的时间,然后是29天。 这不是我期待的30天。很明显,夏令时已经开始并缩短了 一天比一小时短

以下是我考虑时区的解决方案:

function daysBetween(date1String, date2String) {
    var ONE_DAY = 1000 * 60 * 60 * 24;
    var ONE_MINUTE = 1000 * 60;

    var d1 = new Date(date1String);
    var d2 = new Date(date2String);
    var d1_ms = d1.getTime() - d1.getTimezoneOffset() * ONE_MINUTE;
    var d2_ms = d2.getTime() - d2.getTimezoneOffset() * ONE_MINUTE;

    return Math.floor(d1_ms - d2_ms/ONE_DAY);
}

+我的回答很好。太多的人要么不知道,要么干脆忽略javascript的日期对象。大多数情况下不需要外部库。@naveen在
Math.floor
(小写字母“f”)上说得很好,但我故意允许该方法返回非整数天数,以防OP需要,或者返回结果。目前还不清楚手头有什么用例,任何/所有这些方法在不同的情况下都适用于此。是的。小写。太多的c#……)很有道理。但是我没有一个有效的回合案例。@naveen没有
回合的用例
?夏令时呢<代码>日期之间('2005-01-1','2005-08-1')->211.95833与
日期之间('2005-11-1','2005-12-1')->30.041667
。这一点非常有效。由于我生活在一个实行夏令时制度的国家,我往往会忘记这一点。