UNPKG

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
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 };