df531908f3
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
// Human-readable date/time formatting shared across chrono components
|
|
|
|
export function formatTime(date: Date): string {
|
|
return date.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' })
|
|
}
|
|
|
|
export function formatEpochTime(timestamp: number): string {
|
|
return formatTime(new Date(timestamp))
|
|
}
|
|
|
|
export function formatHour(hour: number): string {
|
|
const ampm = hour >= 12 ? 'PM' : 'AM'
|
|
const displayHour = hour % 12 || 12
|
|
return `${displayHour} ${ampm}`
|
|
}
|
|
|
|
export function formatWeekDay(date: Date): string {
|
|
return date.toLocaleDateString('en-US', { weekday: 'short' })
|
|
}
|
|
|
|
export function formatFullDate(date: Date | string): string {
|
|
const value = date instanceof Date ? date : new Date(date)
|
|
return value.toLocaleDateString('en-US', {
|
|
weekday: 'long',
|
|
year: 'numeric',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
})
|
|
}
|
|
|
|
// Local-time YYYY-MM-DD, for date input values
|
|
export function formatLocalIsoDate(date: Date): string {
|
|
const year = date.getFullYear()
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
return `${year}-${month}-${day}`
|
|
}
|
|
|
|
// Local-time HH:MM, for time input values
|
|
export function formatLocalIsoTime(date: Date): string {
|
|
return date.toTimeString().slice(0, 5)
|
|
}
|
|
|
|
// "Jul 6, 2026" from a YYYY-MM-DD (or ISO) string
|
|
export function formatDisplayDate(value: string | null | undefined): string {
|
|
if (!value) return ''
|
|
return new Date(`${value.slice(0, 10)}T00:00:00`).toLocaleDateString(undefined, {
|
|
year: 'numeric',
|
|
month: 'short',
|
|
day: 'numeric',
|
|
})
|
|
}
|
|
|
|
// "1:05 PM" from an HH:MM string
|
|
export function formatDisplayTime(value: string | null | undefined): string {
|
|
if (!value) return ''
|
|
const [hour, minute] = value.split(':').map(Number)
|
|
const date = new Date()
|
|
date.setHours(hour, minute, 0, 0)
|
|
return date.toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit' })
|
|
}
|