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 計算兩日期之間天數
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 結果是8月15日
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月、結果是4月17日
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月、結果是3月17日
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()] = 星期四