JavaScript 計算兩日期時間天數、取得兩時間差異

使用 JavaScript 創建兩個 Date 物件作為參數來計算兩個日期之間的天數,將日期轉換為毫秒並計算差值、再將差值轉換為天數、最後返回了這兩個日期之間的天數。


JavaScript 使用 new Date() 定義兩個輸入的日期,計算兩個日期的時間差,再將兩個日期的時間差除以天數。
一天中的毫秒數 (1000 * 60 * 60 * 24)。

let DateDifference = function (Date1, Date2) { // date object 日期格式
  let milliseconds_Time = Date2.getTime() - Date1.getTime();
  return milliseconds_Time / (1000 * 3600 * 24);
};

TimeSpan 計算兩日期之間天數

JavaScriptTimeSpan 輕鬆計算兩個日期之間的天數,包括考慮閏年和月份的天數差異,能夠完成兩日期之間天數計算,並獲得準確的天數結果,可以輸入日期直接線上日期計算工具。

let DateDiff = function (date1, date2) { // date1 和 date2 是 2016-06-18 格式
  let strDate, oDate1, oDate2, result
  strDate = date1.split("/");
  oDate1 = new Date(strDate[1] + '/' + strDate[2] + '/' + strDate[0]);
  strDate = date2.split("/");
  oDate2 = new Date(strDate[1] + '/' + strDate[2] + '/' + strDate[0]);
  result = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24); // 把相差的毫秒數轉換為天數
  return result;
};
let GetDateDiff = DateDiff("2016/4/28","2016/5/2"); // 轉換為天數 : 4 (四月小)
let GetDateDiff = DateDiff("2016/5/28","2016/6/2"); // 轉換為天數 : 5 (五月大)

-





使用 getDate(), getMonth() 增加天或月

setMonth() 設置 Date 對象中月份 (0 ~ 11)

let d = new Date(2016, 6-1, 15);
d.setMonth(d.getMonth() + 2);
d = Mon Aug 15 2016 00:00:00 GMT+0800 (台北標準時間)

增加兩個月 6-1 = June/6月、所以 d.getMonth() + 2 結果是815


let d = new Date(2016, 03, 15);
d.setDate(d.getDate() + 2);
d = Sun Apr 17 2016 00:00:00 GMT+0800 (台北標準時間)

增加兩天 03 = April/4月、結果是417


let d = new Date(2016, 3-1, 15);
d.setDate(d.getDate() + 2);
d = Thu Mar 17 2016 00:00:00 GMT+0800 (台北標準時間)

增加兩天 3-1 = March/3月、結果是317


let d = new Date(2016, 3-1, 15);
d.setHours(d.getHours() + 2);
d = Thu Mar 17 2016 02:00:00 GMT+0800 (台北標準時間)

時間增加兩小時,未設置時間所以 00:00:00 從開始。


let d = new Date(2016, 3-1, 15, 09, 20, 00);
d.setHours(d.getHours() + 2);
d = Thu Mar 17 2016 11:20:00 GMT+0800 (台北標準時間)

時間增加兩小時,設置時間後結果是 11:20:00 從開始。


d.toLocaleString();

加上 .toLocaleString() 顯示以電腦上的格式、不同電腦設置可以有差異。

d = ‎2016‎年‎3‎月‎15‎日‎ ‎上午‎ ‎11‎:‎20‎:‎00



當月第一天、當月最後一天

let startDate = new Date(); // 取當日
startDate.setDate(1); // 設定日期為第一天
let endDate = new Date(); // 將月份移至下個月份
endDate.setMonth(endDate.getMonth() + 1);

設定為下個月份的第一天

endDate.setDate(1);

將日期 -1 為當月的最後一天

endDate.setDate(endDate.getDate() - 1);



本周第一天

function weekFirstDay() {
  let d = new Date();
  let firstDate = new Date(d - (d.getDay() - 1) * 86400000);
  console.log(firstDate);
}

本周最後一天

function weekLastDay() {
  let d = new Date();
  let firstDate = new Date(d - (d.getDay() - 1) * 86400000);
  let lastDate = new Date((firstDate / 1000 + 6 * 86400) * 1000);
  console.log(lastDate);
}

本月第一天

function monthFirstDay() {
  let d = new Date();
  let firstDate = new Date(d.getFullYear(), d.getMonth(), 1);
  console.log(firstDate);
}

本月最後一天

function monthLastDay() {
  let d = new Date();
  let firstDate = new Date(d.getFullYear(), d.getMonth() + 1, 1);
  let lastDate = new Date(firstDate - 86400000);
  console.log(lastDate);
}


JavaScript Milliseconds 轉換為 Date

let months = "一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月".split(",");
let weekdays = "星期日,星期一,星期二,星期三,星期四,星期五,星期六".split(",");
let num = 1507161600000;
let dd = new Date(num);
dd.toString();
dd.getMonth();
dd.toString() = Thu Oct 05 2017 08:00:00 GMT+0800 (台北標準時間) // 轉換日期
dd.getMonth() = 9 // 月份的值
months[dd.getMonth()] = 十月 // 月份由 months 陣列轉換成中文
weekdays[dd.getDay()] = 星期四