@codianz/better-date
Version:
The Date object easier to work with.
92 lines (91 loc) • 2.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.diffYmdDays = exports.addMonths = exports.addDays = exports.getDayOfWeek = exports.isYmdLike = exports.stringToYmd = exports.isValidYmd = exports.ymdToString = exports.isSameYmd = void 0;
var bdate_1 = require("./bdate");
var day_of_week_1 = require("./day-of-week");
function isSameYmd(a, b) {
return (a !== undefined &&
b !== undefined &&
a.year === b.year &&
a.month === b.month &&
a.day === b.day);
}
exports.isSameYmd = isSameYmd;
function ymdToString(ymd) {
return "".concat(ymd.year.toString()).concat(("00" + ymd.month.toString()).slice(-2)).concat(("00" + ymd.day.toString()).slice(-2));
}
exports.ymdToString = ymdToString;
function isValidYmd(ymd) {
var d = bdate_1.BDate.fromUTCDateTimeValues(ymd.year, ymd.month, ymd.day);
return d.year === ymd.year && d.month === ymd.month && d.day === ymd.day;
}
exports.isValidYmd = isValidYmd;
function stringToYmd(s) {
var ymd = undefined;
var m = s.match(/^([\d]{4})[-/]?([\d]{1,2})[-/]?([\d]{1,2})$/);
if (m) {
ymd = {
year: parseInt(m[1], 10),
month: parseInt(m[2], 10),
day: parseInt(m[3], 10),
};
}
if (ymd === undefined || !isValidYmd(ymd)) {
throw new Error("Invalid date string: ".concat(s));
}
return ymd;
}
exports.stringToYmd = stringToYmd;
function isYmdLike(s) {
if (typeof s === "object") {
if (s === null)
return false;
if ("year" in s) {
if (typeof s.year !== "number")
return false;
}
else {
return false;
}
if ("month" in s) {
if (typeof s.month !== "number")
return false;
}
else {
return false;
}
if ("day" in s) {
if (typeof s.day !== "number")
return false;
}
else {
return false;
}
return true;
}
return false;
}
exports.isYmdLike = isYmdLike;
function getDayOfWeek(ymd) {
var d = bdate_1.BDate.fromUTCDateTimeValues(ymd.year, ymd.month, ymd.day);
return day_of_week_1.DayOfWeeks[d.dayOfWeek];
}
exports.getDayOfWeek = getDayOfWeek;
function addDays(ymd, days) {
return bdate_1.BDate.fromUTCDateTimeValues(ymd.year, ymd.month, ymd.day)
.addDays(days)
.toYMD();
}
exports.addDays = addDays;
function addMonths(ymd, months) {
return bdate_1.BDate.fromUTCDateTimeValues(ymd.year, ymd.month, ymd.day)
.addMonths(months)
.toYMD();
}
exports.addMonths = addMonths;
function diffYmdDays(a, b) {
return ((bdate_1.BDate.fromUTCDateTimeValues(a.year, a.month, a.day).msecSinceEpoch -
bdate_1.BDate.fromUTCDateTimeValues(b.year, b.month, b.day).msecSinceEpoch) /
86400000);
}
exports.diffYmdDays = diffYmdDays;