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 相关文章推荐
JavaScript 对象模型 执行模型
Dec 06 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
js的延迟执行问题分析
Jun 23 Javascript
浅谈JavaScript中的string拥有方法的原因
Aug 28 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
Mar 06 Javascript
Javascript获取background属性中url的值
Oct 17 Javascript
jQuery中 bind的用法简单介绍
Feb 13 Javascript
js实现移动端编辑添加地址【模仿京东】
Apr 28 Javascript
vue-cli3添加模式配置多环境变量的方法
Jun 05 Javascript
js实现全选和全不选
Jul 28 Javascript
React Fragment介绍与使用详解
Nov 11 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
提交表单时执行func方法实现代码
2013/03/17 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python操作json数据的一个简单例子
2014/04/17 Python
Python实现的几个常用排序算法实例
2014/06/16 Python
Python中pygame安装方法图文详解
2015/11/11 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
大学生简历求职信
2014/06/24 职场文书
合伙经营协议书范本
2014/09/13 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
运动会宣传稿50字
2015/07/23 职场文书
利用python做表格数据处理
2021/04/13 Python