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 相关文章推荐
游戏人文件夹程序 ver 4.03
Jul 14 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
jQuery随便控制任意div隐藏的方法
Jun 28 Javascript
值得分享的轻量级Bootstrap Table表格插件
May 30 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
layui获取多选框中的值方法
Aug 15 Javascript
jQuery轮播图实例详解
Aug 15 jQuery
JS数组方法reduce的用法实例分析
Mar 03 Javascript
vue使用element-ui实现表单验证
Dec 13 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
图书管理程序(三)
2006/10/09 PHP
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php 字符转义 注意事项
2009/05/27 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
php模板原理讲解
2013/11/13 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
javascript的回调函数应用示例
2014/02/20 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
幼儿教师培训感言
2014/03/08 职场文书
养牛场项目建议书
2014/05/13 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2015年档案室工作总结
2015/05/23 职场文书
羊脂球读书笔记
2015/06/30 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
Java存储没有重复元素的数组
2022/04/29 Java/Android