init
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
export function isoToSql(iso: string): string | null {
|
||||
const date = new Date(iso);
|
||||
if (Number.isNaN(date.getTime())) return null;
|
||||
return date.toISOString().slice(0, 23).replace("T", " ");
|
||||
}
|
||||
|
||||
export function sqlDateToIso(value: unknown): string | null {
|
||||
if (value === null || value === undefined) return null;
|
||||
if (value instanceof Date) {
|
||||
if (Number.isNaN(value.getTime())) return null;
|
||||
return value.toISOString();
|
||||
}
|
||||
const raw = String(value).trim();
|
||||
if (!raw) return null;
|
||||
if (/[zZ]$/.test(raw) || /[+-]\d{2}:?\d{2}$/.test(raw)) {
|
||||
const date = new Date(raw);
|
||||
if (Number.isNaN(date.getTime())) return null;
|
||||
return date.toISOString();
|
||||
}
|
||||
const normalized = raw.includes("T") ? raw : raw.replace(" ", "T");
|
||||
const withMs = /\.\d{1,3}$/.test(normalized) ? normalized : `${normalized}.000`;
|
||||
const date = new Date(`${withMs}Z`);
|
||||
if (Number.isNaN(date.getTime())) return null;
|
||||
return date.toISOString();
|
||||
}
|
||||
Reference in New Issue
Block a user