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 相关文章推荐
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
jQuery 遍历json数组的实现代码
Sep 22 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
jquery 操作日期、星期、元素的追加的实现代码
Feb 07 Javascript
Javascript中的delete介绍
Sep 02 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
JavaScript中双符号的运算详解
Mar 12 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
js设置随机切换背景图片的简单实例
Nov 12 Javascript
快速搭建vue2.0+boostrap项目的方法
Apr 09 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
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
PHPlet在Windows下的安装
2006/10/09 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
Javascript倒计时代码
2010/08/12 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
python使用super()出现错误解决办法
2017/08/14 Python
python绘制简单彩虹图
2018/11/19 Python
Python列表list排列组合操作示例
2018/12/18 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
特步官方商城:Xtep
2017/03/21 全球购物
校园活动宣传方案
2014/03/28 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
工商管理专业自荐信
2014/06/03 职场文书
青年联谊会致辞
2015/07/31 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
Python 如何解决稀疏矩阵运算
2021/05/26 Python
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python