hexo/node_modules/utility/date.js

198 lines
4.2 KiB
JavaScript

'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);
};