Download src/utils/format-relative-time.ts from SaylorTwift/openhands: direct link, hf CLI and curl.
- Browser
- Download file 1.62 kB
-
https://huggingface.co/SaylorTwift/openhands/resolve/main/src/utils/format-relative-time.ts
- Command line
-
hf download hf://SaylorTwift/openhands/src/utils/format-relative-time.ts
-
curl -L -o format-relative-time.ts https://huggingface.co/SaylorTwift/openhands/resolve/main/src/utils/format-relative-time.ts
1.62 kB
| import { I18nKey } from "#/i18n/declaration"; | |
| export function formatDate(dateStr: string, locale: string): string { | |
| const date = new Date(dateStr); | |
| return date.toLocaleDateString(locale, { | |
| year: "numeric", | |
| month: "short", | |
| day: "numeric", | |
| }); | |
| } | |
| /** | |
| * Whether a timestamp is one nothing can be computed from. Besides an | |
| * unparseable string, that includes the epoch: the backend leaves unset | |
| * datetimes at zero, and formatting one produces "Jan 1, 1970" rather than | |
| * an honest "unknown". | |
| */ | |
| export function isInvalidTimestamp( | |
| dateStr: string | null | undefined, | |
| ): boolean { | |
| if (!dateStr) return true; | |
| const parsed = new Date(dateStr).getTime(); | |
| return Number.isNaN(parsed) || parsed === 0; | |
| } | |
| export function formatRelativeTime( | |
| dateStr: string, | |
| locale: string, | |
| t: (key: I18nKey, options?: Record<string, unknown>) => string, | |
| ): string { | |
| const now = Date.now(); | |
| const then = new Date(dateStr).getTime(); | |
| const diffMs = now - then; | |
| const diffMins = Math.floor(diffMs / 60_000); | |
| const diffHours = Math.floor(diffMs / 3_600_000); | |
| const diffDays = Math.floor(diffMs / 86_400_000); | |
| if (diffMins < 1) return t(I18nKey.AUTOMATIONS$DETAIL$TIME_JUST_NOW); | |
| if (diffMins < 60) | |
| return t(I18nKey.AUTOMATIONS$DETAIL$TIME_MINUTES_AGO, { count: diffMins }); | |
| if (diffHours < 24) | |
| return t(I18nKey.AUTOMATIONS$DETAIL$TIME_HOURS_AGO, { count: diffHours }); | |
| if (diffDays === 1) return t(I18nKey.AUTOMATIONS$DETAIL$TIME_YESTERDAY); | |
| if (diffDays < 7) | |
| return t(I18nKey.AUTOMATIONS$DETAIL$TIME_DAYS_AGO, { count: diffDays }); | |
| return formatDate(dateStr, locale); | |
| } | |