ISO8601日期格式的时间日期的日期

时间:2011-06-27 18:56:55

标签: javascript jquery date

我想做同样的事情 How do I get the number of days between two dates in JavaScript?

但我希望在此日期格式上执行相同操作:2000-12-31

4 个答案:

答案 0 :(得分:9)

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直接识别。不需要自己解析它们。

答案 1 :(得分:2)

试试这个。

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

如果你用更多的选票来检查答案而不是你提供的链接上的标记答案,你就不会问这个问题。 :)

答案 2 :(得分:1)

嗯,这不是jQuery,但同样容易使用。查看DateJS。可以解析日期,差异等。

答案 3 :(得分:0)

此处的其他解决方案未考虑TimeZone信息(如果这是您想要的,那就没问题了) 但我遇到了这样的问题:
我有两个约会: Thu Mar 01 2012 00:00:00 GMT + 0100 Sat Mar 31 2012 00:00:00 GMT + 0200 这将在Math.floor之前29.95833天,因此在发言后29天。 这不是我期待的30天。显然,夏令时已经开始并缩短了 一小时之一。

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

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