nepalidateconvert
Version:
A javascript package to convert nepali date BS (Bikram Sambat) to AD and vice-versa, calcuate age from nepali date (BS). Fixed Smdkl package till 2083
228 lines (227 loc) • 11.5 kB
JavaScript
var c;
(function(e) {
e.INVALID_DAY = "Day is invalid.", e.INVALID_YEAR = "Year is invalid.", e.INVALID_MONTH = "Month is invalid.", e.BS_DATE_OUT_OF_RANGE = "BS Date out of range", e.AD_DATE_OUT_OF_RANGE = "AD Date out of range", e.DATE_FORMAT_INVALID = "Date format is invalid", e.DATE_GREATER_THAN_TODAY = "Date cannot be greater then today";
})(c || (c = {}));
const s = c, t = [];
t[1978] = [1978, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1979] = [1979, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[1980] = [1980, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[1981] = [1981, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[1982] = [1982, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1983] = [1983, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[1984] = [1984, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[1985] = [1985, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[1986] = [1986, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1987] = [1987, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[1988] = [1988, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[1989] = [1989, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[1990] = [1990, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1991] = [1991, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[1992] = [1992, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[1993] = [1993, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[1994] = [1994, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1995] = [1995, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30];
t[1996] = [1996, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[1997] = [1997, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1998] = [1998, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[1999] = [1999, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2e3] = [2e3, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2001] = [2001, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2002] = [2002, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2003] = [2003, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2004] = [2004, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2005] = [2005, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2006] = [2006, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2007] = [2007, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2008] = [2008, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31];
t[2009] = [2009, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2010] = [2010, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2011] = [2011, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2012] = [2012, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[2013] = [2013, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2014] = [2014, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2015] = [2015, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2016] = [2016, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[2017] = [2017, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2018] = [2018, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2019] = [2019, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2020] = [2020, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[2021] = [2021, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2022] = [2022, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30];
t[2023] = [2023, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2024] = [2024, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[2025] = [2025, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2026] = [2026, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2027] = [2027, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2028] = [2028, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2029] = [2029, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30];
t[2030] = [2030, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2031] = [2031, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2032] = [2032, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2033] = [2033, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2034] = [2034, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2035] = [2035, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31];
t[2036] = [2036, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2037] = [2037, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2038] = [2038, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2039] = [2039, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[2040] = [2040, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2041] = [2041, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2042] = [2042, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2043] = [2043, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[2044] = [2044, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2045] = [2045, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2046] = [2046, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2047] = [2047, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[2048] = [2048, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2049] = [2049, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30];
t[2050] = [2050, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2051] = [2051, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[2052] = [2052, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2053] = [2053, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30];
t[2054] = [2054, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2055] = [2055, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2056] = [2056, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30];
t[2057] = [2057, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2058] = [2058, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2059] = [2059, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2060] = [2060, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2061] = [2061, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2062] = [2062, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31];
t[2063] = [2063, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2064] = [2064, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2065] = [2065, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2066] = [2066, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31];
t[2067] = [2067, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2068] = [2068, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2069] = [2069, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2070] = [2070, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30];
t[2071] = [2071, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2072] = [2072, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2073] = [2073, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
t[2074] = [2074, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[2075] = [2075, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2076] = [2076, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30];
t[2077] = [2077, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31];
t[2078] = [2078, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30];
t[2079] = [2079, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2080] = [2080, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30];
t[2081] = [2081, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], t[2082] = [2082, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30];
t[2083] = [2083, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30];
t[2084] = [2084, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30];
t[2085] = [2085, 31, 32, 31, 32, 30, 31, 30, 30, 29, 30, 30, 30];
t[2086] = [2086, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30];
t[2087] = [2087, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30];
t[2088] = [2088, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30];
t[2089] = [2089, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30];
t[2090] = [2090, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30];
t[2091] = [2091, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30];
t[2092] = [2092, 30, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30];
t[2093] = [2093, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30];
t[2094] = [2094, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30];
t[2095] = [2095, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30];
t[2096] = [2096, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30];
t[2097] = [2097, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30];
t[2098] = [2098, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 29, 31];
t[2099] = [2099, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31];
const _ = {
MAX_DAY: 32,
MIN_DAY: 1,
MAX_MONTH: 12,
MIN_MONTH: 1,
YEAR_LENGTH: 4,
MAX_YEAR_AD: 2040,
MAX_MONTH_AD: 31,
MIN_YEAR_BS: 1978,
MAX_YEAR_BS: 2099
}, f = "1921-04-13", M = (e, o, n) => `${e}-${("0" + o).slice(-2)}-${("0" + n).slice(-2)}`, l = (e) => {
const o = e.split("-");
if (o.length !== 3)
throw new Error(s.DATE_FORMAT_INVALID);
return o.map(Number);
};
function u(e) {
const [o, n, r] = l(e);
if (r > _.MAX_DAY || r < _.MIN_DAY || !r)
throw new Error(s.INVALID_DAY);
if (n > _.MAX_MONTH || n < _.MIN_MONTH || !n)
throw new Error(s.INVALID_MONTH);
if (!o || o.toString().length !== _.YEAR_LENGTH)
throw new Error(s.INVALID_YEAR);
return { year: o, month: n, day: r };
}
function y(e) {
const { year: o, month: n, day: r } = u(e);
if (o > _.MAX_YEAR_AD)
throw new Error(s.AD_DATE_OUT_OF_RANGE);
if (n > _.MAX_MONTH_AD)
throw new Error(s.INVALID_MONTH);
return M(o, n, r);
}
function E(e) {
const { year: o, month: n, day: r } = u(e);
if (o < _.MIN_YEAR_BS || o > _.MAX_YEAR_BS)
throw new Error(s.BS_DATE_OUT_OF_RANGE);
if (r > t[o][n])
throw new Error(`No ${r} day exits in this month.`);
return M(o, n, r);
}
function h(e, o = !0) {
let n = 0, r = 0, D = 0, A = 0, a = !1;
for (let T = _.MIN_YEAR_BS; T <= _.MAX_YEAR_BS && !a; T++)
for (let i = _.MIN_MONTH; i <= _.MAX_MONTH; i++)
if (A += t[T][i], e - A < 0) {
D = e - A + t[T][i] + 1, a = !0, n = T, r = i;
break;
}
return o ? M(n, r, D) : { currentYear: n, currentMonth: r, currentDay: D };
}
function Y(e) {
e = y(e);
const o = new Date(f), n = new Date(e), r = Math.floor((n.getTime() - o.getTime()) / 864e5);
if (r < 0)
throw new Error(s.AD_DATE_OUT_OF_RANGE);
return h(r);
}
function I(e, o) {
const [n, r, D] = e.split("-").map(Number), A = new Date(Date.UTC(n, r - 1, D));
A.setUTCDate(A.getUTCDate() + o);
const a = A.getUTCFullYear(), T = A.getUTCMonth() + 1, i = A.getUTCDate();
return M(a, T, i);
}
function w(e) {
e = E(e);
const [o, n, r] = l(e);
let D = 0;
for (let A = _.MIN_YEAR_BS; A <= o; A++)
if (A === o) {
for (let a = _.MIN_MONTH; a < n; a++)
D += t[A][a];
D += r - 1;
} else
for (let a = _.MIN_MONTH; a <= _.MAX_MONTH; a++)
D += t[A][a];
return I(f, D);
}
function O() {
const e = new Date(f), n = Math.floor(((/* @__PURE__ */ new Date()).getTime() - e.getTime()) / 864e5);
return h(n, !1);
}
function R(e) {
const o = E(e), [n, r, D] = l(o), { currentYear: A, currentMonth: a, currentDay: T } = O();
if (n > A || n === A && r > a || n === A && r === a && D > T)
throw new Error(s.DATE_GREATER_THAN_TODAY);
let i = {
year: 0,
month: 0,
day: t[n][r] - D
};
for (let N = n; N <= A; N++)
N === n ? T >= D ? (i.day = T - D, a >= r ? i.month = a - r : (i.month = _.MAX_MONTH - r + a, i.year--)) : (i.day += T, a > r ? i.month = a - r - 1 : (i.month = _.MAX_MONTH - r + a - 1, i.year--)) : i.year++;
return i;
}
export {
Y as adToBs,
w as bsToAd,
R as calculateAge
};