UNPKG

kupos-ui-components-lib

Version:

A reusable UI components package

161 lines (160 loc) 5.73 kB
/** * DateService utility for formatting dates and times */ const datePostfix = "T00:00:00.000Z"; const DateService = { changeDateFormat: (date, fromFormat = "dd/mm/yyyy", toFormat = "mm-dd-yyyy") => { if (date) { let d, m, y; if (fromFormat == "dd/mm/yyyy" || fromFormat == "dd-mm-yyyy") { d = date.substr(0, 2); m = date.substr(3, 2); y = date.substr(6, 4); } else if (fromFormat == "mm/dd/yyyy" || fromFormat == "mm-dd-yyyy") { m = date.substr(0, 2); d = date.substr(3, 2); y = date.substr(6, 4); } else if (fromFormat == "yyyy/mm/dd" || fromFormat == "yyyy-mm-dd") { y = date.substr(0, 4); m = date.substr(5, 2); d = date.substr(8, 2); } return toFormat.replace("dd", d).replace("mm", m).replace("yyyy", y); } return ""; }, getDayname: (day, type = "half") => { const days = ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"]; const fullDays = [ "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado", ]; return type === "half" ? days[day] : fullDays[day]; }, getMonthName: (month, type = "half") => { const months = [ "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic", ]; const fullMonths = [ "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre", ]; return type === "half" ? months[month] : fullMonths[month]; }, getDayNameFromDate: (date, format = "dd/mm/yyyy", type = "half") => { let d = DateService.changeDateFormat(date, format, "yyyy-mm-dd"); if (!d) { return ""; } let doo = new Date(Date.parse(d + datePostfix)); let dt = new Date(doo.getTime() + Math.abs(doo.getTimezoneOffset() * 60000)); let day = dt.getDay(); return DateService.getDayname(day, type); }, getDateFromDate: (date, format = "dd/mm/yyyy") => { let d = DateService.changeDateFormat(date, format, "yyyy-mm-dd"); if (!d) { return ""; } let doo = new Date(Date.parse(d + datePostfix)); let dt = new Date(doo.getTime() + Math.abs(doo.getTimezoneOffset() * 60000)); let day = dt.getDate(); return day > 9 ? day : "0" + day; }, getMonthFromDate: (dateStr, format = "yyyy-mm-dd") => { let d = DateService.changeDateFormat(dateStr, format, "yyyy-mm-dd"); if (!d) { return ""; } let doo = new Date(Date.parse(d + datePostfix)); let dt = new Date(doo.getTime() + Math.abs(doo.getTimezoneOffset() * 60000)); let month = (dt.getMonth() + 1).toString(); return month.length === 1 ? "0" + month : month; }, getMonthNameFromDate: (dateStr, format = "dd/mm/yyyy", type = "half") => { let d = DateService.changeDateFormat(dateStr, format, "yyyy-mm-dd"); if (!d) { return ""; } let doo = new Date(Date.parse(d + datePostfix)); let dt = new Date(doo.getTime() + Math.abs(doo.getTimezoneOffset() * 60000)); let month = dt.getMonth(); return DateService.getMonthName(month, type); }, getYearFromDate: (dateStr, format = "dd/mm/yyyy") => { let d = DateService.changeDateFormat(dateStr, format, "yyyy-mm-dd"); if (!d) { return ""; } let doo = new Date(Date.parse(d + datePostfix)); let dt = new Date(doo.getTime() + Math.abs(doo.getTimezoneOffset() * 60000)); let year = dt.getFullYear(); return year.toString(); }, getServiceItemDate: (dateStr, format = "yyyy-mm-dd") => { let dayName = DateService.getDayNameFromDate(dateStr, format); let day = DateService.getDateFromDate(dateStr, format); let month = DateService.getMonthFromDate(dateStr, format); return dayName + ", " + day + "/" + month; }, /** * Format time string (HH:MM) to AM/PM format */ formatTime: (time) => { if (time === null || time === void 0 ? void 0 : time.includes(":")) { const [hours, minutes] = time.split(":"); const date = new Date(); date.setHours(parseInt(hours, 10)); date.setMinutes(parseInt(minutes, 10)); let formattedHours = date.getHours(); let formattedMinutes = date.getMinutes(); if (formattedHours === 0) { formattedHours = 12; } const hoursStr = formattedHours < 10 ? "0" + formattedHours : formattedHours.toString(); const minutesStr = formattedMinutes < 10 ? "0" + formattedMinutes : formattedMinutes.toString(); const format = new Intl.DateTimeFormat("en-US", { hour: "numeric", minute: "numeric", hour12: true, }); return format .format(date) .replace(/\d+:\d+/, `${hoursStr}:${minutesStr}`); } else { return time; } }, }; export default DateService;