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天了。

  • 相关阅读:
    服务器常用端口
    xml处理类
    水印的代码
    Asp.net常用的51个代码(非常实用)
    poj 2453
    MOD
    LIS(最长上升子序列)
    POJ各题算法分类(转)
    poj 1496&1850
    poj 1423
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4034865.html
Copyright © 2011-2022 走看看