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 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
JS 控件事件小结
Oct 31 Javascript
深入分析javascript中console命令
Aug 14 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
vue2.0 datepicker使用方法
Feb 04 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
vue项目引入字体.ttf的方法
Sep 28 Javascript
JavaScript实现简单音乐播放器
Apr 17 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
基于ts的动态接口数据配置的详解
Dec 18 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 常用类汇总 推荐收藏
2010/05/13 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
小程序云开发实战小结
2018/10/25 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
使用python3构建文件传输的方法
2019/02/13 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
会计学生自我鉴定
2014/02/06 职场文书
中学生自我评价范文
2014/02/08 职场文书
动员大会主持词
2014/03/20 职场文书
带病坚持工作事迹
2014/05/03 职场文书
海洋科学专业求职信
2014/08/10 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
高三英语教学计划
2015/01/23 职场文书
车间主任岗位职责
2015/02/03 职场文书
老乡聚会通知
2015/04/23 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏