nodejs计算时间间隔_Javascript计算时间差的函数分享

核心代码

/*

* 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒

* 其中,年月日为全格式,例如 : 2010-10-12 01:00:00

* 返回精度为:秒,分,小时,天

*/

function GetDateDiff(startTime, endTime, diffType) {

//将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式

startTime = startTime.replace(/\-/g, "/");

endTime = endTime.replace(/\-/g, "/");

//将计算间隔类性字符转换为小写

diffType = diffType.toLowerCase();

var sTime = new Date(startTime); //开始时间

var eTime = new Date(endTime); //结束时间

//作为除数的数字

var divNum = 1;

switch (diffType) {

case "second":

divNum = 1000;

break;

case "minute":

divNum = 1000 * 60;

break;

case "hour":

divNum = 1000 * 3600;

break;

case "day":

divNum = 1000 * 3600 * 24;

break;

default:

break;

}

return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum));

}

调用方法也很简单:

GetDateDiff("2010-10-11 00:00:00", "2010-10-11 00:01:40", "day")

这个是计算天数

GetDateDiff("2010-10-11 00:00:00", "2010-10-11 00:01:40", "seond")是计算秒数

下面脚本之家小编再为大家分析一个不错的

alert(dealDate("2018-01-20","2018-01-28"));

//提示前面的日期小于后面的日期

function dealDate(date1,date2){

date1 = new Date(date1);//如果传进来的是"yyyy-MM-dd"形式的字符串

date2 = new Date(date2);

var year1 = date1.getFullYear();

var month1 = date1.getMonth()+1;

var day1 = date1.getDate();

var dateMax1 = new Date(year1,month1,0);

var dayMax1 = dateMax1.getDate();

var year2 = date2.getFullYear();

var month2 = date2.getMonth()+1;

var day2 = date2.getDate();

var dateMax2 = new Date(year2,month2,0);

var dayMax2 = dateMax2.getDate();

if(day1==dayMax1&&day2==dayMax2){

//开始日期和结束日期都是月底

//直接计算月份差,推算几年几个月

var res = (year2-year1)*12+(month2-month1);//月份差

var difYear = Math.floor(res/12);

var difMonth = res%12;

return ((difYear!=0)?(difYear+"年"):"")+difMonth+"个月";

}else if(day1==dayMax1&&day2

//开始日期是月底,结束日期不是

//计算开始日期到结束日期上一个月的月底,再加上结束日期的天数

var month3 = month2-1;

var res = (year2-year1)*12+(month3-month1);//月份差

var difYear = Math.floor(res/12);

var difMonth = res%12;

var difDay = day2;

return ((difYear!=0)?(difYear+"年"):"")+((difMonth!=0)?(difMonth+"个月"):"")+difDay+"天";

}else if(day1

//开始日期和结束日期都不是月底

//情况1,day1

if(day1<=day2){

var res = (year2-year1)*12+(month2-month1);//月份差

var difYear = Math.floor(res/12);

var difMonth = res%12;

var difDay = day2-day1;

return ((difYear!=0)?(difYear+"年"):"")+((difMonth!=0)?(difMonth+"个月"):"")+difDay+"天";

}else{

var month3 = month2-1;

var res = (year2-year1)*12+(month3-month1);//月份差

var difYear = Math.floor(res/12);

var difMonth = res%12;

var difDayTemp = day1-day2;

var dateMax3 = new Date(year2,month3,0);

var dayMax3 = dateMax3.getDate();

var difDay = dayMax3-difDayTemp;

return ((difYear!=0)?(difYear+"年"):"")+((difMonth!=0)?(difMonth+"个月"):"")+difDay+"天";

}

}

}

运行测试返回天数的,大家可以根据需要参考上面的代码修改即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值