簡體   English   中英

ISO8601日期格式的兩個日期之間的天數

[英]Number of days between two dates in ISO8601 date format

我想做的事情與如何獲取JavaScript中兩個日期之間的天數相同

但我想在此日期格式上執行相同的操作: 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

JavaScript可直接識別ISO8601日期字符串。 無需自己解析它們。

嘗試這個。

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

您是否會問這個問題,如果您已經用更多的贊成票而不是提供的鏈接上的標記答案來檢查答案。 :)

好吧,它不是jQuery,但操作起來也很容易。 DateJS 可以解析日期,差異等。

這里的其他解決方案不考慮TimeZone信息(如果您想要的話就可以了),但是我遇到了這樣的問題:
我有兩個日期: 2012年3月1日星期四00:00:00 GMT + 01002012年3月31日星期六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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM