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()] = 星期四