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 性能优化指南(3)
May 21 Javascript
jQuery bind事件使用详解
May 05 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
Vue插件打包与发布的方法示例
Aug 20 Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 04 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 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源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python面向对象进阶学习
2019/05/21 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
营销部内勤岗位职责
2014/04/30 职场文书
党员批评与自我批评
2014/10/15 职场文书
2014年稽查工作总结
2014/12/20 职场文书
话题作文之诚信
2019/11/28 职场文书
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL