easydatetimeformat
Version:
A lightweight node.js package for formatting Date & Time
33 lines • 3.37 kB
JavaScript
let getOrdinalNum = (n) => n + (n > 0 ? ['th', 'st', 'nd', 'rd'][(n > 3 && n < 21) || n % 10 > 3 ? 0 : n % 10] : '');
module.exports.dateTimeFormat = (e,l,n) => {
let r, t = ["%d%m%y", "%y%m%d", "%m%d%y"],
i = new Date;
l = l || "dd-mm-yyyy";
let a = e => 0 < Number(e) && Number(e) < 32,
d = e => 0 < Number(e) && Number(e) < 13,
u = e => [2, 4].includes(e.length);
if (void 0 === e || void 0 !== e && "now" == e) e = i;
else if (void 0 !== e && void 0 === n)
if (isNaN(Number(e)))
if (3 == (e = e.trim().split(/[.\-_/ ,]/).filter((e => e.length))).length && 4 == e[0].length && a(e[2]) && d(e[1])) e = new Date(e.join("-"));
else {
if (!(3 == e.length && a(e[0]) && d(e[1]) && u(e[2]))) return "Invalid " + (a(e[4 != e[0].length ? 0 : 2]) ? d(e[1]) ? u(e[4 != e[0].length ? 2 : 0]) ? "Format" : "Year" : "Month" : "Date");
e = new Date(2 == e[2].length ? Math.floor(i.getFullYear() / 100) + e[2] : e[2], e[1] - 1, e[0])
}
else e = new Date(Number(e));
else {
if (void 0 === e || void 0 === n) return "Something went wrong"; {
n = n.toLocaleLowerCase();
let l, r, s;
if (e = e.trim().split(/[.\-_/ ,]/).filter((e => e.length)), n.includes(t[0])) l = e[2], r = e[1], s = e[0];
else if (n.includes(t[1])) l = e[0], r = e[1], s = e[2];
else {
if (!n.includes(t[2])) return "This input date format is not valid, We are working on it";
l = e[2], r = e[0], s = e[1]
}
if (!(3 == e.length && a(s) && d(r) && u(l))) return "Invalid " + (a(s) ? d(r) ? u(l) ? "Format" : "Year" : "Month" : "Date");
e = new Date(2 == l.length ? Math.floor(i.getFullYear() / 100) + l : l, r - 1, s)
}
}
return r = e.getSeconds(), l.includes("ss") ? l = l.replace("ss", r < 10 ? `0${r}` : r) : l.includes("s") && (l = l.replace("s", r)), r = e.getMinutes(), l.includes("ii") ? l = l.replace("ii", r < 10 ? `0${r}` : r) : l.includes("i") && (l = l.replace("i", r)), r = e.getHours(), l.includes("A") && (l = l.replace("A", r >= 12 ? "PM" : "AM"), r = r > 12 ? r - 12 : r), l.includes("hh") ? l = l.replace("hh", r < 10 ? `0${r}` : r) : l.includes("h") && (l = l.replace("h", r)), r = e.getDate(), l.includes("ddd") ? l = l.replace("ddd", getOrdinalNum(r)) : l.includes("dd") ? l = l.replace("dd", r < 10 ? `0${r}` : r) : l.includes("d") ? l = l.replace("d", r) : l.includes("DDDD") ? l = l.replace("DDDD", ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][e.getDay()]) : l.includes("DDD") && (l = l.replace("DDD", ["Sun", "Mon", "Tue", "Web", "Thu", "Fri", "Sat"][e.getDay()])), r = e.getMonth(), l.includes("mm") ? l = l.replace("mm", r < 9 ? `0${r+1}` : r + 1) : l.includes("m") ? l = l.replace("m", r + 1) : l.includes("MMMM") ? l = l.replace("MMMM", ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][r]) : l.includes("MMM") && (l = l.replace("MMM", ["Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"][r])), r = e.getFullYear(), l.includes("yyyy") ? l = l.replace("yyyy", r) : l.includes("yy") && (l = l.replace("yy", r.toString().substr(-2))), l
}