UNPKG

@codianz/better-date

Version:
92 lines (91 loc) 2.92 kB
"use strict"; 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;