| 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 |
|