UNPKG

simple-time-date

Version:
100 lines (99 loc) 2.66 kB
"use strict"; 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;