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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
Jan 06 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
微信小程序使用form表单获取输入框数据的实例代码
May 17 Javascript
Vue.js如何使用Socket.IO的示例代码
Sep 05 Javascript
js实现秒表计时器
Dec 16 Javascript
微信小程序实现上传多个文件 超过10个
Mar 30 Javascript
vue框架中props的typescript用法详解
Feb 17 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 版本]
2007/03/20 PHP
解析isset与is_null的区别
2013/08/09 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
python socket网络编程之粘包问题详解
2018/04/28 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
四种会话跟踪技术
2015/05/20 面试题
《威尼斯的小艇》教学反思
2014/02/17 职场文书
个人工作表现评价材料
2014/09/21 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
python - asyncio异步编程
2021/04/06 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python