cerceis-lib
Version:
Contains list of quality of life functions that is written in TypeScript and es6
108 lines • 3.68 kB
JavaScript
// 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