zoukankan      html  css  js  c++  java
  • JavaScript如何计算两个日期间的时间差

    有时候我们需要知道两个日期之间差了多少天,多少小时,甚至多少分钟多少秒。下面我们用JavaScript实现一个函数,用于计算两个日期的时间差,先来看看代码:

    01 <script type="text/javascript">
    02  
    03 /**
    04 * 时间对象的格式化;
    05 */
    06 Date.prototype.format = function(format){
    07  /*
    08   * eg:format="YYYY-MM-dd hh:mm:ss";
    09   */
    10     var o = {
    11         "M+" :  this.getMonth()+1,  //month
    12         "d+" :  this.getDate(),     //day
    13         "h+" :  this.getHours(),    //hour
    14         "m+" :  this.getMinutes(),  //minute
    15         "s+" :  this.getSeconds(), //second
    16         "q+" :  Math.floor((this.getMonth()+3)/3),  //quarter
    17         "S"  :  this.getMilliseconds() //millisecond
    18     }
    19    
    20     if(/(y+)/.test(format)) {
    21         format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    22     }
    23   
    24     for(var in o) {
    25         if(new RegExp("("+ k +")").test(format)) {
    26             format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
    27         }
    28     }
    29     return format;
    30 }
    31  
    32  
    33 /*
    34 * 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒
    35 * 其中,年月日为全格式,例如 : 2010-10-12 01:00:00
    36 * 返回精度为:秒,分,小时,天
    37 */
    38  
    39 function GetDateDiff(startTime, endTime, diffType) {
    40     //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
    41     startTime = startTime.replace(/-/g, "/");
    42     endTime = endTime.replace(/-/g, "/");
    43  
    44     //将计算间隔类性字符转换为小写
    45     diffType = diffType.toLowerCase();
    46     var sTime = new Date(startTime);      //开始时间
    47     var eTime = new Date(endTime);  //结束时间
    48     //作为除数的数字
    49     var divNum = 1;
    50     switch (diffType) {
    51         case "second":
    52             divNum = 1000;
    53             break;
    54         case "minute":
    55             divNum = 1000 * 60;
    56             break;
    57         case "hour":
    58             divNum = 1000 * 3600;
    59             break;
    60         case "day":
    61             divNum = 1000 * 3600 * 24;
    62             break;
    63         default:
    64             break;
    65     }
    66     return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum));
    67 }
    68  
    69 var testDate = new Date();
    70 var testStr = testDate.format("yyyy-MM-dd hh:mm:ss");
    71  
    72 var result = GetDateDiff("2010-02-26 16:00:00", testStr, "day");
    73 document.write("简明现代魔法 www.nowamagic.net 建站已有" + result + "天了。");
    74 //alert(result);
    75 </script>

    使用的方法很简单,比如计算天数可以这样:

    1 GetDateDiff("2010-02-26 16:00:00""2011-07-02 21:48:40""day");

    计算秒数则可以这样:

    1 GetDateDiff("2010-02-26 16:00:00""2011-07-02 21:48:40""second");

    实例程序的运行结果如下:

    简明现代魔法 www.nowamagic.net 建站已有1695天了。

  • 相关阅读:
    【GruntMate】一个让你更方便使用Grunt的工具
    HTML5小游戏【是男人就下一百层】UI美化版
    【Grunt】关于Grunt可视化的尝试
    在腾讯ubuntu云服务器上面部署asp.net core 2.1网站
    存储过程中执行动态Sql语句
    我的2016年总结
    程序员的成长阶梯和级别定义
    让IE8在win7下面能显示使用window.showmodaldialog弹出窗口的地址状态栏
    更改计算机名称后 导致 sql server 2008 R2 用windows账户不能附加的错误解决办法
    【转】通过js获取系统版本以及浏览器版本
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4034865.html
Copyright © 2011-2022 走看看