search and/or read your saved and liked bluesky posts
wails go svelte sqlite desktop bluesky
at main 40 lines 968 B view raw
1export function parseDateValue(value: unknown): Date | null { 2 if (!value) { 3 return null; 4 } 5 6 if (value instanceof Date) { 7 return Number.isNaN(value.getTime()) || value.getUTCFullYear() <= 1 ? null : value; 8 } 9 10 if (typeof value === "string" || typeof value === "number") { 11 const parsed = new Date(value); 12 return Number.isNaN(parsed.getTime()) || parsed.getUTCFullYear() <= 1 ? null : parsed; 13 } 14 15 return null; 16} 17 18export function formatShortDate(value: unknown): string { 19 const date = parseDateValue(value); 20 if (!date) { 21 return "-"; 22 } 23 24 return date.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }); 25} 26 27export function formatLongDateTime(value: unknown): string { 28 const date = parseDateValue(value); 29 if (!date) { 30 return "Unknown date"; 31 } 32 33 return date.toLocaleString("en-US", { 34 month: "short", 35 day: "numeric", 36 year: "numeric", 37 hour: "numeric", 38 minute: "2-digit", 39 }); 40}