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 相关文章推荐
Mootools 1.2教程(3) 数组使用简介
Sep 14 Javascript
javascript中用星号表示预录入内容的实现代码
Jan 08 Javascript
jQuery.getScript加载同域JS的代码
Feb 13 Javascript
Javascript 键盘事件的组合使用实现代码
May 04 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
Jan 29 Javascript
JS实现定时自动关闭DIV层提示框的方法
May 11 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
jQuery实现Select下拉列表进行状态选择功能
Mar 30 jQuery
微信小程序vant弹窗组件的实现方式
Feb 21 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 04 Javascript
ES6字符串的扩展实例
Dec 21 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
php 错误处理经验分享
2011/10/11 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
python django中8000端口被占用的解决
2019/12/17 Python
在python shell中运行python文件的实现
2019/12/21 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
python drf各类组件的用法和作用
2021/01/12 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
校园摄影活动策划方案
2014/02/05 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
同意迁入证明模板
2014/10/26 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
劳资员岗位职责
2015/02/13 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang