|                                                                                                                                                                                                     |  | 'use strict';
var MONTHS = [  'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
// only set once.
var TIMEZONE = ' ';var _hourOffset = parseInt(-(new Date().getTimezoneOffset()) / 60, 10);if (_hourOffset >= 0) {  TIMEZONE += '+';} else {  TIMEZONE += '-';}_hourOffset = Math.abs(_hourOffset);if (_hourOffset < 10) {  _hourOffset = '0' + _hourOffset;}TIMEZONE += _hourOffset + '00';
/** * Access log format date. format: `moment().format('DD/MMM/YYYY:HH:mm:ss ZZ')` * * @return {String} */exports.accessLogDate = function (d) {  // 16/Apr/2013:16:40:09 +0800
  d = d || new Date();  var date = d.getDate();  if (date < 10) {    date = '0' + date;  }  var hours = d.getHours();  if (hours < 10) {    hours = '0' + hours;  }  var mintues = d.getMinutes();  if (mintues < 10) {    mintues = '0' + mintues;  }  var seconds = d.getSeconds();  if (seconds < 10) {    seconds = '0' + seconds;  }  return date + '/' + MONTHS[d.getMonth()] + '/' + d.getFullYear() +    ':' + hours + ':' + mintues + ':' + seconds + TIMEZONE;};
/** * Normal log format date. format: `moment().format('YYYY-MM-DD HH:mm:ss.SSS')` * * @return {String} */exports.logDate = exports.YYYYMMDDHHmmssSSS = function (d, msSep) {  if (typeof d === 'string') {    // logDate(msSep)
    msSep = d;    d = new Date();  } else {    // logDate(d, msSep)
    d = d || new Date();  }  var date = d.getDate();  if (date < 10) {    date = '0' + date;  }  var month = d.getMonth() + 1;  if (month < 10) {    month = '0' + month;  }  var hours = d.getHours();  if (hours < 10) {    hours = '0' + hours;  }  var mintues = d.getMinutes();  if (mintues < 10) {    mintues = '0' + mintues;  }  var seconds = d.getSeconds();  if (seconds < 10) {    seconds = '0' + seconds;  }  var milliseconds = d.getMilliseconds();  if (milliseconds < 10) {    milliseconds = '00' + milliseconds;  } else if (milliseconds < 100) {    milliseconds = '0' + milliseconds;  }  return d.getFullYear() + '-' + month + '-' + date + ' ' +    hours + ':' + mintues + ':' + seconds + (msSep || '.') + milliseconds;};
/** * `moment().format('YYYY-MM-DD HH:mm:ss')` format date string. * * @return {String} */exports.YYYYMMDDHHmmss = function (d, options) {  d = d || new Date();  if (!(d instanceof Date)) {    d = new Date(d);  }
  var dateSep = '-';  var timeSep = ':';  if (options) {    if (options.dateSep) {      dateSep = options.dateSep;    }    if (options.timeSep) {      timeSep = options.timeSep;    }  }  var date = d.getDate();  if (date < 10) {    date = '0' + date;  }  var month = d.getMonth() + 1;  if (month < 10) {    month = '0' + month;  }  var hours = d.getHours();  if (hours < 10) {    hours = '0' + hours;  }  var mintues = d.getMinutes();  if (mintues < 10) {    mintues = '0' + mintues;  }  var seconds = d.getSeconds();  if (seconds < 10) {    seconds = '0' + seconds;  }  return d.getFullYear() + dateSep + month + dateSep + date + ' ' +    hours + timeSep + mintues + timeSep + seconds;};
/** * `moment().format('YYYY-MM-DD')` format date string. * * @return {String} */exports.YYYYMMDD = function YYYYMMDD(d, sep) {  if (typeof d === 'string') {    // YYYYMMDD(sep)
    sep = d;    d = new Date();  } else {    // YYYYMMDD(d, sep)
    d = d || new Date();    if (typeof sep !== 'string') {      sep = '-';    }  }  var date = d.getDate();  if (date < 10) {    date = '0' + date;  }  var month = d.getMonth() + 1;  if (month < 10) {    month = '0' + month;  }  return d.getFullYear() + sep + month + sep + date;};
/** * return datetime struct. * * @return {Object} date *  - {Number} YYYYMMDD, 20130401 *  - {Number} H, 0, 1, 9, 12, 23 */exports.datestruct = function (now) {  now = now || new Date();  return {    YYYYMMDD: now.getFullYear() * 10000 + (now.getMonth() + 1) * 100 + now.getDate(),    H: now.getHours()  };};
/** * Get Unix's timestamp in seconds. * @return {Number} */exports.timestamp = function timestamp(t) {  if (t) {    var v = t;    if (typeof v === 'string') {      v = Number(v);    }    if (String(t).length === 10) {      v *= 1000;    }    return new Date(v);  }  return Math.round(Date.now() / 1000);};
 |