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 计算两日期之间天数
在 JavaScript 中 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()] = 星期四