javascript计算两个时间差,面试题

文章参考:https://blog.csdn.net/bodilove/article/details/52105782

<script type="text/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));
}
var result = GetDateDiff("2010-02-26 00:00:00", "2010-02-28 23:00:00", "day");
document.write("两者时间差为:" + result + "天了。");
</script>

这是常规的计算两个时间差,比如计算相差的天数,省略去了小时,上述代码输出:两者时间差为:2天了。
有较大的误差。

下面是我前两天遇到的一个面试题:计算两个时间相差的小时数,并且,如果分钟数>30,加上.5,否则加上 .0
<script type="text/javascript">
		function GetDateDiff(startTime, endTime) {
		    //将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 minus = (eTime.getTime() - sTime.getTime());
		    var lastMinute = minus % (1000 * 3600)/(1000 * 60);//得到余下的分钟数
		    // minus % (1000 * 3600)得到小时数余下的毫秒数
		    if(lastMinute > 30){
		    	 return parseInt(minus / parseInt(divNum) )+ ".5";
		    }else{
		    	return parseInt(minus / parseInt(divNum) )+ ".0";
		    }
		}
			var result = GetDateDiff("2010-02-26 16:00:00", "2010-02-26 18:12:00");
			document.write("两者时间差为:" + result);
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值