diff --git a/lib/dateHelpers.ts b/lib/dateHelpers.ts index 2a30485..a7074a2 100644 --- a/lib/dateHelpers.ts +++ b/lib/dateHelpers.ts @@ -1,6 +1,9 @@ import Long from "long"; -const timestampFromDatetimeLocal = (datetimeLocal: string): Long => { +export const timestampFromDatetimeLocal = ( + datetimeLocal: string, + units?: "s" | "ms" | "ns", +): Long => { const [date, time] = datetimeLocal.split("T"); const [year, month, day] = date.split("-"); const [hours, minutes] = time.split(":"); @@ -12,7 +15,34 @@ const timestampFromDatetimeLocal = (datetimeLocal: string): Long => { Number(hours), Number(minutes), ); - return Long.fromNumber(dateObj.getTime()).divide(1000); + + const timestampMillis = Long.fromNumber(dateObj.getTime()); + + switch (units) { + case "s": + return timestampMillis.divide(1000); // seconds + case "ns": + return timestampMillis.divide(1000_000); // nanoseconds + default: + return timestampMillis; // milliseconds + } }; -export { timestampFromDatetimeLocal }; +// With stripped seconds and milliseconds +export const datetimeLocalFromTimestamp = (timestamp: number): string => { + const minDate = new Date(timestamp); + + const minMonth = minDate.getMonth() + 1; // It's 0-indexed + const minMonthStr = minMonth < 10 ? `0${minMonth}` : String(minMonth); + + const minDay = minDate.getDate(); + const minDayStr = minDay < 10 ? `0${minDay}` : String(minDay); + + const minHours = minDate.getHours(); + const minHoursStr = minHours < 10 ? `0${minHours}` : String(minHours); + + const minMinutes = minDate.getMinutes(); + const minMinutesStr = minMinutes < 10 ? `0${minMinutes}` : String(minMinutes); + + return `${minDate.getFullYear()}-${minMonthStr}-${minDayStr}T${minHoursStr}:${minMinutesStr}`; +};