UNPKG

cerceis-lib

Version:

Contains list of quality of life functions that is written in TypeScript and es6

108 lines 3.68 kB
// src/time/index.ts var toMs = (h = 0, m = 0, s = 0, ms = 0) => h * 36e5 + m * 6e4 + s * 1e3 + ms; var toSeconds = (h = 0, m = 0, s = 0, ms = 0) => h * 3600 + m * 60 + s + ms / 1e3; var toMinutes = (h = 0, m = 0, s = 0, ms = 0) => h * 60 + m + s / 60 + ms / 6e4; var toHours = (h = 0, m = 0, s = 0, ms = 0) => h + m / 60 + s / 3600 + ms / 36e5; var isDateObject = (d) => Object.prototype.toString.call(d) === "[object Date]"; var FromTime = { jpnDayMap: { 0: "\u65E5", 1: "\u6708", 2: "\u706B", 3: "\u6C34", 4: "\u6728", 5: "\u91D1", 6: "\u571F" }, toMs, toSeconds, toMinutes, toHours, /** * Format a Date into "YYYY-MM-DD HH:mm:ss" (UTC). * @param date Date object * @param options time: include time portion; asObject: return ObjectifiedDate */ format(date, options = {}) { const opts = { time: true, asObject: false, ...options }; const iso = date.toISOString(); if (opts.time) { if (opts.asObject) return { Y: Number(iso.slice(0, 4)), M: Number(iso.slice(5, 7)), D: Number(iso.slice(8, 10)), h: Number(iso.slice(11, 13)), m: Number(iso.slice(14, 16)), s: Number(iso.slice(17, 19)) }; return `${iso.slice(0, 10)} ${iso.slice(11, 19)}`; } if (opts.asObject) return { Y: Number(iso.slice(0, 4)), M: Number(iso.slice(5, 7)), D: Number(iso.slice(8, 10)) }; return iso.slice(0, 10); }, /** * Convert a date string to the shortest readable locale string. * Year > Month > Day > Same day > time only. * Currently supports "jpn" only. * @param input Date string * @param locale Language code (default "jpn") */ toDateTimeShortLocale(input, locale = "jpn") { const date = new Date(input); const now = /* @__PURE__ */ new Date(); if (now.getFullYear() !== date.getFullYear()) return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`; if (now.getMonth() !== date.getMonth()) { if (locale === "jpn") return `${date.getMonth() + 1}\u6708${date.getDate()}\u65E5`; } if (now.getDate() !== date.getDate()) { if (locale === "jpn") return `${date.getDate()}\u65E5${this.jpnDayMap[date.getDay()]}`; } if (locale === "jpn") return `${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`; return ""; } }; var cDate = class { constructor(date) { const d = isDateObject(date) ? date : new Date(date); this._date = FromTime.format(d, { asObject: true }); } /** * Add N months to the stored date. * @param n Number of months to add */ addMonth(n) { const d = new Date(Date.UTC( this._date.Y, this._date.M - 1 + n, // month is 0-indexed this._date.D, this._date.h ?? 0, this._date.m ?? 0, this._date.s ?? 0 )); this._date = FromTime.format(d, { asObject: true }); } get dateTime() { return `${this._date.Y}-${String(this._date.M).padStart(2, "0")}-${String(this._date.D).padStart(2, "0")} ${String(this._date.h ?? 0).padStart(2, "0")}:${String(this._date.m ?? 0).padStart(2, "0")}:${String(this._date.s ?? 0).padStart(2, "0")}`; } get date() { return `${this._date.Y}-${String(this._date.M).padStart(2, "0")}-${String(this._date.D).padStart(2, "0")}`; } get time() { return `${String(this._date.h ?? 0).padStart(2, "0")}:${String(this._date.m ?? 0).padStart(2, "0")}:${String(this._date.s ?? 0).padStart(2, "0")}`; } }; export { FromTime, cDate, isDateObject }; //# sourceMappingURL=index.mjs.map