Javascript计算时间差的函数分享


Posted in Javascript onJuly 04, 2011

核心代码

/* 
* 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒 
* 其中,年月日为全格式,例如 : 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")是计算秒数

下面三水点靠木小编再为大家分析一个不错的

<html> 
<script type="text/javascript"> 
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<dayMax2){
  //开始日期是月底,结束日期不是
  //计算开始日期到结束日期上一个月的月底,再加上结束日期的天数
    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<dayMax1&&day2<dayMax2){
  //开始日期和结束日期都不是月底
  //情况1,day1<day2
    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+"天";
    }
  }
}
</script>
</html>

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

Javascript 相关文章推荐
js函数的延迟加载实现代码
Oct 11 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
Avalonjs双向数据绑定与监听的实例代码
Jun 23 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
element-ui中的select下拉列表设置默认值方法
Aug 24 Javascript
JS根据json数组多个字段排序及json数组常用操作
Jun 06 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
ajax 同步请求和异步请求的差异分析
Jul 04 #Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 #Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
Jul 04 #Javascript
JS分割字符串并放入数组的函数
Jul 04 #Javascript
js列举css中所有图标的实现代码
Jul 04 #Javascript
初学js 新节点的创建 删除 的步骤
Jul 04 #Javascript
初学js插入节点appendChild insertBefore使用方法
Jul 04 #Javascript
You might like
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
pandas实现选取特定索引的行
2018/04/20 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
python重试装饰器的简单实现方法
2019/01/31 Python
python批量修改ssh密码的实现
2019/08/08 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
如何把python项目部署到linux服务器
2020/08/26 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
新闻专业个人求职信
2013/12/19 职场文书
师说教学反思
2014/02/07 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
农村文化活动总结
2014/08/28 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
2014年药店工作总结
2014/11/20 职场文书
初婚初育证明范本
2015/06/18 职场文书
个人道歉信大全
2019/04/11 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android