/**
* //获取两个日期的相差日期数
* @param {any} firstDate 开启时间 2022-03-23 00:03:00
* @param {any} secondDate 结束时间 2023-03-23 00:04:00
* @param {any} differ(differ 1.相差天数; 2.相差小时数; 3.相差分钟数; 4.相差秒数)
*/
function date_getdiffer_date(firstDate, secondDate, differ) {
//1)将两个日期字符串转化为日期对象
var startDate = new Date(this.date_ios_format(firstDate));
var endDate = new Date(this.date_ios_format(secondDate));
//2)计算两个日期相差的毫秒数
var msecNum = endDate.getTime() - startDate.getTime();
//3)计算两个日期相差的天数
var dayNum = Math.floor(msecNum / this.date_getdiffer_scale(differ));
//console.log(firstDate + "," + secondDate + "," + differ + "," + dayNum)
return dayNum;
}
/**
* @function
* @name date_ios_format
* @desc 解决日期字符串在IOS中显示为NaN的问题
*/
function date_ios_format(datestr) {
return datestr.replace(/\-/g, "/");
}
/**
* //获取与毫秒数的转化比例
* @param {any} value(1.相差天数; 2.相差小时数; 3.相差分钟数; 4.相差秒数)
*/
function date_getdiffer_scale(value) {
var format;
//获取转化比(天数跟毫秒数的比例)
if (value == 1) {
format = parseFloat(24 * 60 * 60 * 1000);
}
//获取转化比(小时数跟毫秒数的比例)
else if (value == 2) {
format = parseFloat(60 * 60 * 1000);
}
//获取转化比(分钟数跟毫秒数的比例)
else if (value == 3) {
format = parseFloat(60 * 1000);
}
//获取转化比(秒数跟毫秒数的比例)
else if (value == 4) {
format = parseFloat(1000);
}
return format;
}
/**
* 比较两个日期的天数差,不比较时分秒
* @param {any} date1 时间1字符串
* @param {any} date2 时间1字符串
*/
function us_differ_day(date1, date2) {
//console.log("us_differ_day="+date1)
var sdate = new Date(this.date_ios_format(date1));
var edate = new Date(this.date_ios_format(date2));
var sd = this.us_date_format(sdate, "yyyy-MM-dd")
var ed = this.us_date_format(edate, "yyyy-MM-dd")
sdate = new Date(sd);
edate = new Date(ed);
var datespan = edate - sdate;
datespan = Math.abs(datespan);
var idays = Math.floor(datespan / (24 * 3600 * 1000));
return idays;
}
/**
* @function
* @name date_ios_format
* @desc 解决日期字符串在IOS中显示为NaN的问题
*/
function date_ios_format(datestr) {
return datestr.replace(/\-/g, "/");
}
/**
* @function
* @name us_date_format
* @param {string} _date - 时间 不是时间字符串需要new Date("2022-03-23 01:02:03")
* @param {string} fmt - 格式化 yyyy-MM-dd hh:mm:ss
* @desc 返回时间字符串
*/
function us_date_format(_date, fmt) {
//console.log(_date);
if (fmt == undefined) {
fmt = "yyyy-MM-dd hh:mm:ss";
}
var o = {
"M+": _date.getMonth() + 1, //月份
"d+": _date.getDate(), //日
"h+": _date.getHours(), //小时
"m+": _date.getMinutes(), //分
"s+": _date.getSeconds(), //秒
"q+": Math.floor((_date.getMonth() + 3) / 3), //季度
"S": _date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (_date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k])
.length)));
}
}
//console.log(fmt);
return fmt;
}
var starttime ="2023-03-23 00:00:01";
var endtime ="2023-03-24 00:00:00"
//1.相差天数; 2.相差小时数; 3.相差分钟数; 4.相差秒数
var ilength = date_getdiffer_date(starttime, endtime, 1); //结果是1 比较时分秒
var ilength1 =us_differ_day(starttime, endtime);//结果是0 不计较时分秒