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 相关文章推荐
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
JavaSript中变量的作用域闭包的深入理解
May 12 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
Mar 17 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
Jul 13 Javascript
node.js中 stream使用教程
Aug 28 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
简单的js计算器实现
Oct 26 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
js移动端事件基础及常用事件库详解
Aug 15 Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
js基础之事件捕获与冒泡原理
Oct 09 Javascript
vue实现验证用户名是否可用
Jan 20 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
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
使用forever管理nodejs应用教程
2014/06/03 NodeJs
sails框架的学习指南
2014/12/22 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
详解python中的数据类型和控制流
2019/08/08 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
Pandas之缺失数据的实现
2021/01/06 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
西班牙在线光学:Visual-Click
2020/06/22 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
暑期培训随笔感言
2014/03/10 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
美术专业自荐信
2014/07/07 职场文书
收款委托书
2014/10/14 职场文书
大学生个人简历自荐信
2015/03/06 职场文书