mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
module.exports.ISO8601_FORMAT = 'yyyy-MM-dd hh:mm:ss.SSS';
|
|
module.exports.ISO8601_WITH_TZ_OFFSET_FORMAT = 'yyyy-MM-ddThh:mm:ssO';
|
|
module.exports.DATETIME_FORMAT = 'dd MM yyyy hh:mm:ss.SSS';
|
|
module.exports.ABSOLUTETIME_FORMAT = 'hh:mm:ss.SSS';
|
|
|
|
function padWithZeros(vNumber, width) {
|
|
let numAsString = vNumber.toString();
|
|
while (numAsString.length < width) {
|
|
numAsString = `0${numAsString}`;
|
|
}
|
|
return numAsString;
|
|
}
|
|
|
|
function addZero(vNumber) {
|
|
return padWithZeros(vNumber, 2);
|
|
}
|
|
|
|
/**
|
|
* Formats the TimeOffset
|
|
* Thanks to http://www.svendtofte.com/code/date_format/
|
|
* @private
|
|
*/
|
|
function offset(timezoneOffset) {
|
|
// Difference to Greenwich time (GMT) in hours
|
|
const os = Math.abs(timezoneOffset);
|
|
let h = String(Math.floor(os / 60));
|
|
let m = String(os % 60);
|
|
if (h.length === 1) {
|
|
h = `0${h}`;
|
|
}
|
|
if (m.length === 1) {
|
|
m = `0${m}`;
|
|
}
|
|
return timezoneOffset < 0 ? `+${h}${m}` : `-${h}${m}`;
|
|
}
|
|
|
|
module.exports.asString = function (format, date, timezoneOffset) {
|
|
if (typeof(format) !== 'string') {
|
|
timezoneOffset = date;
|
|
date = format;
|
|
format = module.exports.ISO8601_FORMAT;
|
|
}
|
|
// make the date independent of the system timezone by working with UTC
|
|
if (timezoneOffset === undefined) {
|
|
timezoneOffset = date.getTimezoneOffset();
|
|
}
|
|
|
|
date.setUTCMinutes(date.getUTCMinutes() - timezoneOffset);
|
|
const vDay = addZero(date.getUTCDate());
|
|
const vMonth = addZero(date.getUTCMonth() + 1);
|
|
const vYearLong = addZero(date.getUTCFullYear());
|
|
const vYearShort = addZero(date.getUTCFullYear().toString().substring(2, 4));
|
|
const vYear = (format.indexOf('yyyy') > -1 ? vYearLong : vYearShort);
|
|
const vHour = addZero(date.getUTCHours());
|
|
const vMinute = addZero(date.getUTCMinutes());
|
|
const vSecond = addZero(date.getUTCSeconds());
|
|
const vMillisecond = padWithZeros(date.getUTCMilliseconds(), 3);
|
|
const vTimeZone = offset(timezoneOffset);
|
|
date.setUTCMinutes(date.getUTCMinutes() + timezoneOffset);
|
|
const formatted = format
|
|
.replace(/dd/g, vDay)
|
|
.replace(/MM/g, vMonth)
|
|
.replace(/y{1,4}/g, vYear)
|
|
.replace(/hh/g, vHour)
|
|
.replace(/mm/g, vMinute)
|
|
.replace(/ss/g, vSecond)
|
|
.replace(/SSS/g, vMillisecond)
|
|
.replace(/O/g, vTimeZone);
|
|
return formatted;
|
|
};
|