/* eslint-disable no-nested-ternary */ import { parse } from "date-fns"; import dayjs from "dayjs"; export function getFormatedFlightTime(flightTime: string) { const splitedFlightTime = flightTime.split(":"); const hour = splitedFlightTime[0]!; const minute = splitedFlightTime[1]!; const hourStr = hour === "00" ? "" : hour[0] === "0" ? hour[1] : hour; const minuteStr = minute === "00" ? "" : minute[0] === "0" ? minute[1] : minute; return `${hourStr}sa ${minuteStr}dk`; } export class DateHelper { public static dateToISOString(date: Date) { return dayjs(date).toISOString(); } public static dateFromISOString(date: string) { return dayjs(date).toDate(); } public static dateToFullYearString(date: Date, seperator: string = "/") { return dayjs(date).format(`YYYY${seperator}MM${seperator}DD`); } public static dateFromFullYearString(date: string, seperator: string = "/") { return dayjs(date, `YYYY${seperator}MM${seperator}DD`).toDate(); } public static isoStringToFullYearString( date: string, seperator: string = "/", ) { return dayjs(date).format(`YYYY${seperator}MM${seperator}DD`); } public static fullYearStringToISOString( dateStr: string, seperator: string = "/", customFormat?: string, ) { if (customFormat) { const date = parse(dateStr, customFormat, new Date()); // return dayjs.utc(date).toISOString(); return `${dayjs(date).format("YYYY-MM-DD")}T00:00:00.000Z`; } const [day, month, year] = dateStr.split("."); const formattedDate = `${year}-${month}-${day}`; return `${dayjs( formattedDate, customFormat ?? `YYYY${seperator}MM${seperator}DD`, ).format("YYYY-MM-DD")}T00:00:00.000Z`; } public static isoStringToTime(date: string) { return dayjs(date).format("HH:mm"); } public static dateFromTime(time: string) { return dayjs(time, "HH:mm").toDate(); } public static UTCCheck(date: Date) { return date.toString()?.includes("Z"); } public static dayjs(date: Date) { if (DateHelper.UTCCheck(date)) { return dayjs(date).utc(); } return dayjs(date); } public static dateToTime(date: Date) { const hourFormat = "HH:mm"; if (DateHelper.UTCCheck(date)) { return dayjs(date).utc().format(hourFormat); } return dayjs(date).format(hourFormat); } public static formatDateToString(date: Date | undefined) { const dateFormat = "DD MMM YYYY"; if (!date) { return " "; } if (DateHelper.UTCCheck(date)) { return dayjs(date).utc().format(dateFormat); } return dayjs(date).format(dateFormat); } public static getNightCount(from: Date, to: Date) { const day = 24 * 60 * 60 * 1000; return Math.round(Math.abs((from.getTime() - to.getTime()) / day)); } public static calculateDaysBetweenDates(from: Date, to: Date) { return dayjs(to).diff(dayjs(from), "day"); } }