//-- //-- Augmented methods for the JavaScript Date() object //-- // Substitute date components into a string Date.prototype.formatString = function(template) { var t = template.replace(/0hh12/g,String.zeroPad(this.getHours12(),2)); t = t.replace(/hh12/g,this.getHours12()); t = t.replace(/0hh/g,String.zeroPad(this.getHours(),2)); t = t.replace(/hh/g,this.getHours()); t = t.replace(/mmm/g,config.messages.dates.shortMonths[this.getMonth()]); t = t.replace(/0mm/g,String.zeroPad(this.getMinutes(),2)); t = t.replace(/mm/g,this.getMinutes()); t = t.replace(/0ss/g,String.zeroPad(this.getSeconds(),2)); t = t.replace(/ss/g,this.getSeconds()); t = t.replace(/[ap]m/g,this.getAmPm().toLowerCase()); t = t.replace(/[AP]M/g,this.getAmPm().toUpperCase()); t = t.replace(/wYYYY/g,this.getYearForWeekNo()); t = t.replace(/wYY/g,String.zeroPad(this.getYearForWeekNo()-2000,2)); t = t.replace(/YYYY/g,this.getFullYear()); t = t.replace(/YY/g,String.zeroPad(this.getFullYear()-2000,2)); t = t.replace(/MMM/g,config.messages.dates.months[this.getMonth()]); t = t.replace(/0MM/g,String.zeroPad(this.getMonth()+1,2)); t = t.replace(/MM/g,this.getMonth()+1); t = t.replace(/0WW/g,String.zeroPad(this.getWeek(),2)); t = t.replace(/WW/g,this.getWeek()); t = t.replace(/DDD/g,config.messages.dates.days[this.getDay()]); t = t.replace(/ddd/g,config.messages.dates.shortDays[this.getDay()]); t = t.replace(/0DD/g,String.zeroPad(this.getDate(),2)); t = t.replace(/DDth/g,this.getDate()+this.daySuffix()); t = t.replace(/DD/g,this.getDate()); var tz = this.getTimezoneOffset(); var atz = Math.abs(tz); t = t.replace(/TZD/g,(tz < 0 ? '+' : '-') + String.zeroPad(Math.floor(atz / 60),2) + ':' + String.zeroPad(atz % 60,2)); t = t.replace(/\\/g,""); return t; }; Date.prototype.getWeek = function() { var dt = new Date(this.getTime()); var d = dt.getDay(); if(d==0) d=7;// JavaScript Sun=0, ISO Sun=7 dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week to calculate weekNo var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1)+3600000)/86400000); return Math.floor(n/7)+1; }; Date.prototype.getYearForWeekNo = function() { var dt = new Date(this.getTime()); var d = dt.getDay(); if(d==0) d=7;// JavaScript Sun=0, ISO Sun=7 dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week return dt.getFullYear(); }; Date.prototype.getHours12 = function() { var h = this.getHours(); return h > 12 ? h-12 : ( h > 0 ? h : 12 ); }; Date.prototype.getAmPm = function() { return this.getHours() >= 12 ? config.messages.dates.pm : config.messages.dates.am; }; Date.prototype.daySuffix = function() { return config.messages.dates.daySuffixes[this.getDate()-1]; }; // Convert a date to local YYYYMMDDHHMM string format Date.prototype.convertToLocalYYYYMMDDHHMM = function() { return this.getFullYear() + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2); }; // Convert a date to UTC YYYYMMDDHHMM string format Date.prototype.convertToYYYYMMDDHHMM = function() { return this.getUTCFullYear() + String.zeroPad(this.getUTCMonth()+1,2) + String.zeroPad(this.getUTCDate(),2) + String.zeroPad(this.getUTCHours(),2) + String.zeroPad(this.getUTCMinutes(),2); }; // Convert a date to UTC YYYYMMDD.HHMMSSMMM string format Date.prototype.convertToYYYYMMDDHHMMSSMMM = function() { return this.getUTCFullYear() + String.zeroPad(this.getUTCMonth()+1,2) + String.zeroPad(this.getUTCDate(),2) + "." + String.zeroPad(this.getUTCHours(),2) + String.zeroPad(this.getUTCMinutes(),2) + String.zeroPad(this.getUTCSeconds(),2) + String.zeroPad(this.getUTCMilliseconds(),3) +"0"; }; // Static method to create a date from a UTC YYYYMMDDHHMM format string Date.convertFromYYYYMMDDHHMM = function(d) { d = d?d.replace(/[^0-9]/g, ""):""; return Date.convertFromYYYYMMDDHHMMSSMMM(d.substr(0,12)); }; // Static method to create a date from a UTC YYYYMMDDHHMMSS format string Date.convertFromYYYYMMDDHHMMSS = function(d) { d = d?d.replace(/[^0-9]/g, ""):""; return Date.convertFromYYYYMMDDHHMMSSMMM(d.substr(0,14)); }; // Static method to create a date from a UTC YYYYMMDDHHMMSSMMM format string Date.convertFromYYYYMMDDHHMMSSMMM = function(d) { d = d ? d.replace(/[^0-9]/g, "") : ""; return new Date(Date.UTC(parseInt(d.substr(0,4),10), parseInt(d.substr(4,2),10)-1, parseInt(d.substr(6,2),10), parseInt(d.substr(8,2)||"00",10), parseInt(d.substr(10,2)||"00",10), parseInt(d.substr(12,2)||"00",10), parseInt(d.substr(14,3)||"000",10))); };