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函数
Nov 20 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
jQuery 中DOM 操作详解
Jan 13 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
JavaScript每天必学之基础知识
Sep 17 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
Angular.JS中的指令引用template与指令当做属性详解
Mar 30 Javascript
JavaScript设置名字输入不合法的实现方法
May 23 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
JS数组Reduce方法功能与用法实例详解
Apr 29 Javascript
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 empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
php如何获取文件的扩展名
2015/10/28 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
vscode 远程调试python的方法
2017/12/01 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python实现简单井字棋小游戏
2020/03/05 Python
Python实现代码块儿折叠
2020/04/15 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
党章学习思想汇报
2014/01/14 职场文书
单位租房协议书样本
2014/10/30 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
Python数据分析入门之数据读取与存储
2021/05/13 Python