simple-time-date
Version:
easy and simple to get date and time
100 lines (99 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DateTime = void 0;
exports.setFormat = setFormat;
exports.setZone = setZone;
var _helpers = require("./helpers");
const DEFAULT_FORMAT = 'Y.M.D H:m:s';
function setFormat(dateTime, timeFormat = DEFAULT_FORMAT) {
let newDateTime = '';
for (let i = 0; i < timeFormat.length; i++) {
let letter = timeFormat[i];
try {
switch (letter) {
case 'D':
letter = dateTime.getUTCDate();
break;
case 'M':
letter = dateTime.getUTCMonth() + 1;
break;
case 'Y':
letter = dateTime.getUTCFullYear();
break;
case 'H':
letter = dateTime.getUTCHours();
break;
case 'm':
letter = dateTime.getUTCMinutes();
break;
case 's':
letter = dateTime.getUTCSeconds();
break;
case 'S':
letter = dateTime.getUTCMilliseconds();
if (letter < 100) {
letter = '0' + letter;
}
if (letter < 10) {
letter = '0' + letter;
}
break;
}
} catch (err) {
console.error(`Set time format error! Error: ${err.message}`);
return '';
}
if (typeof letter === 'number' && letter < 10) {
letter = '0' + letter;
}
newDateTime += letter;
}
return newDateTime;
}
function setZone(dateTime, timeZone = '') {
if (!(0, _helpers.isString)(timeZone)) {
console.error(`Invalid time zone: ${timeZone}! Necessary string.`);
return '';
}
const zone = Number(timeZone.slice(1));
try {
if ((0, _helpers.isInteger)(zone)) {
if (timeZone[0] === '+') {
dateTime.setUTCHours(dateTime.getUTCHours() + zone);
} else if (timeZone[0] === '-') {
dateTime.setUTCHours(dateTime.getUTCHours() - zone);
}
}
return dateTime;
} catch (err) {
console.error(`Set time zone error! Error: ${err.message}`);
return '';
}
}
class DateTime {
#format;
#zone;
constructor(options = {}) {
const {
format,
zone
} = options;
this.#format = format ?? DEFAULT_FORMAT;
this.#zone = zone ?? '';
}
now(format) {
const time = new Date();
return setFormat(setZone(time, this.#zone), format ?? this.#format);
}
create(timeString, format) {
const time = new Date(timeString);
if (time.toUTCString() === 'Invalid Date') {
console.error(`Error! Invalid time string: ${timeString}`);
return '';
}
return setFormat(setZone(time, this.#zone), format ?? this.#format);
}
}
exports.DateTime = DateTime;