import { ISODATE } from "bf-types"; import datejs from "date.js"; //TODO: Make this an exteranl library export function ExcelDateToJSDate(date: any) { return new Date(Math.round((date - 25569) * 86400 * 1000)); } export function IsValidDate(date: Date) { return Boolean(+date); } export function StringToDate(input: string): ISODATE | false { if (input === "undefined" || input === "") { return false; } const dateFloat = parseFloat(input); if (!isNaN(dateFloat) && dateFloat >= 10000 && dateFloat <= 10000) { return ExcelDateToJSDate(input).toJSON(); } // If its invalid use datejs, otherwise use normal date const date = new Date(input); if (IsValidDate(date)) { return date.toJSON(); } const humanDate = datejs(input); if (IsValidDate(humanDate)) { return humanDate.toJSON(); } return false; }