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 相关文章推荐
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
Aug 09 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 Javascript
如何将网页表格内容导入excel
Feb 18 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
详解Javascript几种跨域方式总结
Feb 27 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 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桌面中心(四) 数据显示
2007/03/11 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
详解json在php中的应用
2018/09/30 PHP
javascript 播放器 控制
2007/01/22 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
python生成器generator用法实例分析
2015/06/04 Python
python正则表达式re之compile函数解析
2017/10/25 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
python实现电子产品商店
2019/02/26 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
五一服装活动方案
2014/01/11 职场文书
遗产继承公证书
2014/04/09 职场文书
核心价值观演讲稿
2014/05/13 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
客房领班岗位职责
2015/02/11 职场文书
画展观后感
2015/06/17 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
pycharm代码删除恢复的方法
2021/06/26 Python