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 相关文章推荐
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
jquery+json实现数据二级联动的方法
Nov 28 Javascript
理解Javascript图片预加载
Feb 23 Javascript
js解决movebox移动问题
Mar 29 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
原生js实现倒计时--2018
Feb 21 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 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&amp;&amp;mysql)五
2006/10/09 PHP
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
实例详解Node.js 函数
2018/06/10 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python实现决策树分类
2018/08/30 Python
python操作yaml说明
2020/04/08 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
函授大专自我鉴定
2013/11/01 职场文书
大一学生的职业生涯规划书范文
2014/01/19 职场文书
学生打架检讨书
2014/02/14 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
旷课检讨书范文
2014/10/30 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers