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 相关文章推荐
js中的window.open返回object的错误的解决方法
Aug 15 Javascript
js动画(animate)简单引擎代码示例
Dec 04 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
Jul 10 Javascript
vue中appear的用法
Aug 17 Javascript
微信小程序倒计时功能实现代码
Nov 09 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
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内置过滤器FILTER使用实例
2014/06/25 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python的常用模块之collections模块详解
2018/12/06 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
解析Python的缩进规则的使用
2019/01/16 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
计算机网络专业推荐信
2013/11/24 职场文书
违反交通法规检讨书
2014/09/10 职场文书
通讯稿格式及范文
2015/07/22 职场文书