@@ -22,8 +22,24 @@ import {
2222} from 'date-fns'
2323
2424export const formatDateToISO = ( dateString : string ) => {
25- const parsedDate = parse ( dateString , 'yyyyMMddHHmmss' , new Date ( ) )
26- return format ( parsedDate , "yyyy-MM-dd'T'HH:mm:ssXXX" )
25+ // Handle empty or invalid date strings
26+ if ( ! dateString || dateString . trim ( ) === '' ) {
27+ return ''
28+ }
29+
30+ try {
31+ const parsedDate = parse ( dateString , 'yyyyMMddHHmmss' , new Date ( ) )
32+
33+ // Additional validation of parsed date
34+ if ( ! isValidDate ( parsedDate ) || isNaN ( parsedDate . getTime ( ) ) ) {
35+ return ''
36+ }
37+
38+ return format ( parsedDate , "yyyy-MM-dd'T'HH:mm:ssXXX" )
39+ } catch ( error ) {
40+ // Return empty string for invalid date formats
41+ return ''
42+ }
2743}
2844
2945// parseDate parses date of both format: '2006-01-02 15:04:05 UTC' and `2006-01-02T15:04:05Z` (RFC3339).
@@ -94,3 +110,27 @@ export const formatDateStd = (
94110export const isValidDate = ( dateObject : Date ) => {
95111 return new Date ( dateObject ) . toString ( ) !== 'Invalid Date'
96112}
113+
114+ // Safe date formatting with distance
115+ export const formatDateWithDistance = ( dateString : string , dateObject : Date ) => {
116+ if ( ! dateString || ! isValidDate ( dateObject ) ) return '-'
117+
118+ try {
119+ return `${ dateString } (${ formatDistanceToNowStrict ( dateObject , { addSuffix : true } ) } )`
120+ } catch ( error ) {
121+ console . warn ( 'Error formatting date distance:' , error , 'date:' , dateObject )
122+ return '-'
123+ }
124+ }
125+
126+ // Safe distance formatting only
127+ export const formatDistanceSafe = ( dateObject : Date ) => {
128+ if ( ! isValidDate ( dateObject ) ) return '-'
129+
130+ try {
131+ return formatDistanceToNowStrict ( dateObject , { addSuffix : true } )
132+ } catch ( error ) {
133+ console . warn ( 'Error formatting distance:' , error , 'date:' , dateObject )
134+ return '-'
135+ }
136+ }
0 commit comments