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

  • 相关阅读:
    超棒的监控工具 DataDog Splunk 日志易
    API 接口设计 原则
    程序员 架构师 成长 设计 原则
    OAM 继续演进:阿里云携手微软与 Crossplane 社区发布 OAM Kubernetes 标准实现与核心依赖库
    首席架构师 码农总结 互联网整体解决方案
    《不抱怨的世界2》 读后感
    适合开发者的最佳Linux发行版
    大数据 消息 日志
    CRM 线索来源 获客方式
    微服务开发过程中需要注意的若干事项_逍遥子曰
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4034865.html
Copyright © 2020-2023  润新知