amountFormatter.ts
11 months ago
convertLocalDateTimeToISOString.ts
10 months ago
formatTimestamp.ts
10 months ago
formatToDateLocalInput.ts
10 months ago
formatToDateTimeLocalInput.ts
10 months ago
getRelativeTimeString.ts
10 months ago
index.ts
10 months ago
prepareDefaultValuesFromSchema.ts
11 months ago
formatTimestamp.ts
32 lines
| 1 | import {dateI18n, getDate, getSettings} from '@wordpress/date'; |
| 2 | /** |
| 3 | * Format the timestamp using the WordPress site settings for timezone and format. |
| 4 | * |
| 5 | * @since 4.13.0 updated to use the @wordpress/date functions |
| 6 | * @since 4.10.0 |
| 7 | */ |
| 8 | export function formatTimestamp(timestamp: string | null | undefined, includeTime: boolean = true): string { |
| 9 | // Handle null, undefined, or empty string |
| 10 | if (!timestamp) { |
| 11 | return '—'; |
| 12 | } |
| 13 | |
| 14 | // Parse timestamps using WordPress site timezone. Works with naive and offset/Z strings. |
| 15 | const date = getDate(timestamp); |
| 16 | |
| 17 | // Check if the date is valid |
| 18 | if (isNaN(date.getTime())) { |
| 19 | return '—'; |
| 20 | } |
| 21 | |
| 22 | const {formats} = getSettings(); |
| 23 | const datePart = dateI18n(formats.date || 'F j, Y', date, undefined); |
| 24 | if (includeTime) { |
| 25 | const timePart = dateI18n(formats.time || 'g:i a', date, undefined); |
| 26 | return `${datePart} ${timePart}`; |
| 27 | } |
| 28 | |
| 29 | return datePart; |
| 30 | } |
| 31 | |
| 32 |