Date Formatting (with import)
Uses date-fns for date formatting via ESM import
TjsCompat
/#
## Date Formatting with Imports
This example demonstrates importing an external ESM module
(date-fns) and using it with TJS type safety.
#/
import { format, formatDistance, addDays, parseISO } from 'date-fns'
// Format a date with various patterns
function formatDate(date: '2024-01-15', pattern: 'yyyy-MM-dd'): '' {
const parsed = parseISO(date)
return format(parsed, pattern)
}
// Get human-readable relative time
function timeAgo(date: '2024-01-15'): '' {
const parsed = parseISO(date)
return formatDistance(parsed, new Date(), { addSuffix: true })
}
// Add days to a date
function addWorkdays(date: '2024-01-15', days: 5): '' {
const parsed = parseISO(date)
const result = addDays(parsed, days)
return format(result, 'yyyy-MM-dd')
}
// Complex date operation with validation
function createEvent(input: {
title: 'Meeting',
startDate: '2024-01-15',
durationDays: 1
}): { title: '', start: '', end: '', formatted: '' } {
const start = parseISO(input.startDate)
const end = addDays(start, input.durationDays)
return {
title: input.title,
start: format(start, 'yyyy-MM-dd'),
end: format(end, 'yyyy-MM-dd'),
formatted: `${input.title}: ${format(start, 'MMM d')} - ${format(end, 'MMM d, yyyy')}`
}
}