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 相关文章推荐
jquery validate 自定义验证方法介绍 日期验证
Feb 27 Javascript
js子页面获取父页面数据示例
May 15 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 Javascript
Javascript中replace()小结
Sep 30 Javascript
一分钟理解js闭包
May 04 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
jQuery获取元素父节点的方法
Jun 21 Javascript
详解在Node.js中发起HTTP请求的5种方法
Jan 10 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
小程序使用watch监听数据变化的方法详解
Sep 20 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
Nov 05 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 Mysql类 可以参考学习熟悉下
2009/06/21 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python实现多线程的两种方式分析
2018/08/29 Python
python协程之动态添加任务的方法
2019/02/19 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
python字典的值可以修改吗
2020/06/29 Python
Keras搭建自编码器操作
2020/07/03 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
DBA的职责都有哪些
2012/05/16 面试题
建筑工程专业大学生求职信
2014/04/23 职场文书
感恩之星事迹材料
2014/05/03 职场文书
大学自主招生推荐信
2014/05/10 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
九一八事变演讲稿
2014/09/05 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014年采购工作总结
2014/11/20 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技