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 相关文章推荐
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
js带按钮的提示框可供选择示例代码
Sep 17 Javascript
JavaScript Math.ceil() 函数使用介绍
Dec 11 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
JavaScript数组实现数据结构中的队列与堆栈
May 26 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
Apr 01 Javascript
详解如何在Vue里建立长按指令
Aug 20 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
Apr 28 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 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
mysql+php分页类(已测)
2008/03/31 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
Python中交换两个元素的实现方法
2018/06/29 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
python中rb含义理解
2020/06/18 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
美国性感内衣店:Yandy
2018/06/12 全球购物
为什么要有struct关键字
2012/05/08 面试题
语文教育专业应届生求职信
2013/11/23 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
小学语文复习计划
2015/01/19 职场文书
高中英语教学反思范文
2016/03/02 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
nginx配置之并发频次限制
2022/04/18 Servers