Files
lst_v3/backend/utils/excelToDate.utils.ts
Blake Matthes 47b149d1ea
All checks were successful
Build and Push LST Docker Image / docker (push) Successful in 4m26s
feat(dm): migrated all the dm topics
2026-06-26 11:05:17 -05:00

45 lines
1.1 KiB
TypeScript

import { getJsDateFromExcel } from "excel-date-to-js";
export const excelDateStuff = (
serial: number,
defaultTime = 800,
time?: number,
) => {
if (typeof serial !== "number" || serial <= 0) {
return "invalid Date";
}
// Get base date from Excel serial (this gives you UTC midnight)
const excelTime = excelSerialToTime(serial);
const finalTime = time ?? excelTime ?? defaultTime;
const date = getJsDateFromExcel(Math.floor(serial));
const localOffset = new Date().getTimezoneOffset() / 60;
const hours = Math.floor(finalTime / 100);
const minutes = finalTime % 100;
// Set the time in UTC
date.setUTCHours(hours + localOffset);
date.setUTCMinutes(minutes);
date.setUTCSeconds(0);
date.setUTCMilliseconds(0);
//console.log(date.toISOString(), serial, time);
return date.toISOString();
};
const excelSerialToTime = (serial: number): number | null => {
const fraction = serial % 1;
if (fraction <= 0) {
return null;
}
const totalMinutes = Math.round(fraction * 24 * 60);
const hours = Math.floor(totalMinutes / 60);
const minutes = totalMinutes % 60;
return hours * 100 + minutes;
};