You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
5.4 KiB
210 lines
5.4 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports["default"] = void 0;
|
|
|
|
var _util = require("./util");
|
|
|
|
var _en = _interopRequireDefault(require("./locale/en"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
|
|
var REGEX_FORMAT = /\[([^\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;
|
|
|
|
function pad(val) {
|
|
var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
var output = "".concat(Math.abs(val));
|
|
var sign = val < 0 ? '-' : '';
|
|
|
|
while (output.length < len) {
|
|
output = "0".concat(output);
|
|
}
|
|
|
|
return sign + output;
|
|
}
|
|
|
|
function formatTimezone(offset) {
|
|
var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
var sign = offset > 0 ? '-' : '+';
|
|
var absOffset = Math.abs(offset);
|
|
var hours = Math.floor(absOffset / 60);
|
|
var minutes = absOffset % 60;
|
|
return sign + pad(hours, 2) + delimeter + pad(minutes, 2);
|
|
}
|
|
|
|
var meridiem = function meridiem(h, _, isLowercase) {
|
|
var word = h < 12 ? 'AM' : 'PM';
|
|
return isLowercase ? word.toLocaleLowerCase() : word;
|
|
};
|
|
|
|
var formatFlags = {
|
|
Y: function Y(date) {
|
|
var y = date.getFullYear();
|
|
return y <= 9999 ? "".concat(y) : "+".concat(y);
|
|
},
|
|
// Year: 00, 01, ..., 99
|
|
YY: function YY(date) {
|
|
return pad(date.getFullYear(), 4).substr(2);
|
|
},
|
|
// Year: 1900, 1901, ..., 2099
|
|
YYYY: function YYYY(date) {
|
|
return pad(date.getFullYear(), 4);
|
|
},
|
|
// Month: 1, 2, ..., 12
|
|
M: function M(date) {
|
|
return date.getMonth() + 1;
|
|
},
|
|
// Month: 01, 02, ..., 12
|
|
MM: function MM(date) {
|
|
return pad(date.getMonth() + 1, 2);
|
|
},
|
|
MMM: function MMM(date, locale) {
|
|
return locale.monthsShort[date.getMonth()];
|
|
},
|
|
MMMM: function MMMM(date, locale) {
|
|
return locale.months[date.getMonth()];
|
|
},
|
|
// Day of month: 1, 2, ..., 31
|
|
D: function D(date) {
|
|
return date.getDate();
|
|
},
|
|
// Day of month: 01, 02, ..., 31
|
|
DD: function DD(date) {
|
|
return pad(date.getDate(), 2);
|
|
},
|
|
// Hour: 0, 1, ... 23
|
|
H: function H(date) {
|
|
return date.getHours();
|
|
},
|
|
// Hour: 00, 01, ..., 23
|
|
HH: function HH(date) {
|
|
return pad(date.getHours(), 2);
|
|
},
|
|
// Hour: 1, 2, ..., 12
|
|
h: function h(date) {
|
|
var hours = date.getHours();
|
|
|
|
if (hours === 0) {
|
|
return 12;
|
|
}
|
|
|
|
if (hours > 12) {
|
|
return hours % 12;
|
|
}
|
|
|
|
return hours;
|
|
},
|
|
// Hour: 01, 02, ..., 12
|
|
hh: function hh() {
|
|
var hours = formatFlags.h.apply(formatFlags, arguments);
|
|
return pad(hours, 2);
|
|
},
|
|
// Minute: 0, 1, ..., 59
|
|
m: function m(date) {
|
|
return date.getMinutes();
|
|
},
|
|
// Minute: 00, 01, ..., 59
|
|
mm: function mm(date) {
|
|
return pad(date.getMinutes(), 2);
|
|
},
|
|
// Second: 0, 1, ..., 59
|
|
s: function s(date) {
|
|
return date.getSeconds();
|
|
},
|
|
// Second: 00, 01, ..., 59
|
|
ss: function ss(date) {
|
|
return pad(date.getSeconds(), 2);
|
|
},
|
|
// 1/10 of second: 0, 1, ..., 9
|
|
S: function S(date) {
|
|
return Math.floor(date.getMilliseconds() / 100);
|
|
},
|
|
// 1/100 of second: 00, 01, ..., 99
|
|
SS: function SS(date) {
|
|
return pad(Math.floor(date.getMilliseconds() / 10), 2);
|
|
},
|
|
// Millisecond: 000, 001, ..., 999
|
|
SSS: function SSS(date) {
|
|
return pad(date.getMilliseconds(), 3);
|
|
},
|
|
// Day of week: 0, 1, ..., 6
|
|
d: function d(date) {
|
|
return date.getDay();
|
|
},
|
|
// Day of week: 'Su', 'Mo', ..., 'Sa'
|
|
dd: function dd(date, locale) {
|
|
return locale.weekdaysMin[date.getDay()];
|
|
},
|
|
// Day of week: 'Sun', 'Mon',..., 'Sat'
|
|
ddd: function ddd(date, locale) {
|
|
return locale.weekdaysShort[date.getDay()];
|
|
},
|
|
// Day of week: 'Sunday', 'Monday', ...,'Saturday'
|
|
dddd: function dddd(date, locale) {
|
|
return locale.weekdays[date.getDay()];
|
|
},
|
|
// AM, PM
|
|
A: function A(date, locale) {
|
|
var meridiemFunc = locale.meridiem || meridiem;
|
|
return meridiemFunc(date.getHours(), date.getMinutes(), false);
|
|
},
|
|
// am, pm
|
|
a: function a(date, locale) {
|
|
var meridiemFunc = locale.meridiem || meridiem;
|
|
return meridiemFunc(date.getHours(), date.getMinutes(), true);
|
|
},
|
|
// Timezone: -01:00, +00:00, ... +12:00
|
|
Z: function Z(date) {
|
|
return formatTimezone(date.getTimezoneOffset(), ':');
|
|
},
|
|
// Timezone: -0100, +0000, ... +1200
|
|
ZZ: function ZZ(date) {
|
|
return formatTimezone(date.getTimezoneOffset());
|
|
},
|
|
// Seconds timestamp: 512969520
|
|
X: function X(date) {
|
|
return Math.floor(date.getTime() / 1000);
|
|
},
|
|
// Milliseconds timestamp: 512969520900
|
|
x: function x(date) {
|
|
return date.getTime();
|
|
},
|
|
w: function w(date, locale) {
|
|
return (0, _util.getWeek)(date, {
|
|
firstDayOfWeek: locale.firstDayOfWeek,
|
|
firstWeekContainsDate: locale.firstWeekContainsDate
|
|
});
|
|
},
|
|
ww: function ww(date, locale) {
|
|
return pad(formatFlags.w(date, locale), 2);
|
|
}
|
|
};
|
|
|
|
function format(val, str) {
|
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';
|
|
var date = (0, _util.toDate)(val);
|
|
|
|
if (!(0, _util.isValidDate)(date)) {
|
|
return 'Invalid Date';
|
|
}
|
|
|
|
var locale = options.locale || _en["default"];
|
|
return formatStr.replace(REGEX_FORMAT, function (match, p1) {
|
|
if (p1) {
|
|
return p1;
|
|
}
|
|
|
|
if (typeof formatFlags[match] === 'function') {
|
|
return "".concat(formatFlags[match](date, locale));
|
|
}
|
|
|
|
return match;
|
|
});
|
|
}
|
|
|
|
var _default = format;
|
|
exports["default"] = _default;
|
|
module.exports = exports.default;
|