JS時間類拡張


日付の書式設定
/**
 *       (     )
 * @param fmt  (yyyy-MM-dd hh:mm:ss.S)
 * @returns
 */
Date.prototype.format = function(fmt)   
{ 
  var o = {   
    "M+" : this.getMonth()+1,                 //     
    "d+" : this.getDate(),                    //    
    "h+" : this.getHours(),                   //     
    "m+" : this.getMinutes(),                 //    
    "s+" : this.getSeconds(),                 //    
    "q+" : Math.floor((this.getMonth()+3)/3), //     
    "S"  : this.getMilliseconds()             //     
  };   
  if(/(y+)/.test(fmt))   
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
  for(var k in o)   
    if(new RegExp("("+ k +")").test(fmt))   
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
  return fmt;   
}  
使用例new Date().format("yyyy-MM-dd hh")/prints 2016-06-23 new Date().format("yyyy-MM-dd hh:mm:ss.S")/prints 2016-06-23 14:32:08.32
時間を比較し、指定された単位の数値を返します.
/**
 *     
 * @param strInterval        
 * @param dtEnd      
 * @returns
 */
Date.prototype.DateDiff = function(strInterval, dtEnd) {   
    var dtStart = this;  
    if (typeof dtEnd == 'string' )//              
    {   
        dtEnd = new Date(dtEnd);  
    }  
    switch (strInterval) {   
        case 's' :return parseInt((dtEnd - dtStart) / 1000);  // 
        case 'm' :return parseInt((dtEnd - dtStart) / 60000);  // 
        case 'h' :return parseInt((dtEnd - dtStart) / 3600000);  // 
        case 'd' :return parseInt((dtEnd - dtStart) / 86400000);  // 
        case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));  // 
        case 'M' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);  // 
        case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();  // 
    }  
}  
一例new Date('2016-06-23').DateDiff("s",'2016-06-24')/戻り値の差の秒数/prints 86400 new Date('2016-06-23').DateDiff("d",'2016-06-24')/戻り値の差の日数/prints 1