The framework provides 5 powerful date formatting functions that automatically use your configured timezone and locale:
General-purpose formatting with preset formats:
// Using presets
echo format_date('2024-12-31 15:30:00', 'short'); // "12/31/24"
echo format_date('2024-12-31 15:30:00', 'medium'); // "Dec 31, 2024"
echo format_date('2024-12-31 15:30:00', 'long'); // "December 31, 2024"
echo format_date('2024-12-31 15:30:00', 'datetime'); // "Dec 31, 2024 3:30 PM"
// Custom formats
echo format_date('2024-12-31', 'Y-m-d'); // "2024-12-31"
echo format_date('2024-12-31', 'l, F j, Y'); // "Tuesday, December 31, 2024"
| Preset | Format | Example Output |
|---|---|---|
short |
n/j/y |
12/31/24 |
medium |
M j, Y |
Dec 31, 2024 |
long |
F j, Y |
December 31, 2024 |
full |
l, F j, Y |
Tuesday, December 31, 2024 |
datetime |
M j, Y g:i A |
Dec 31, 2024 3:30 PM |
time |
g:i A |
3:30 PM |
Uses PHP's Intl extension for multi-language support:
echo format_date_intl('2024-12-31', 'long', 'none');
// en_US: "December 31, 2024"
// pt_PT: "31 de dezembro de 2024"
// es_ES: "31 de diciembre de 2024"
// fr_FR: "31 décembre 2024"
Displays time relative to now:
echo format_date_relative('-5 minutes'); // "5 minutes ago"
echo format_date_relative('-2 hours'); // "2 hours ago"
echo format_date_relative('yesterday'); // "1 day ago"
echo format_date_relative('+3 days'); // "in 3 days"
Intelligent context-aware date display:
echo format_date_human('today'); // "Today at 3:30 PM"
echo format_date_human('yesterday'); // "Yesterday at 10:15 AM"
echo format_date_human('-2 weeks'); // "Dec 28"
echo format_date_human('-1 year'); // "Oct 11, 2024"
Get detailed timezone information:
$tz = format_timezone('America/New_York');
// Returns:
// [
// 'name' => 'America/New_York',
// 'abbreviation' => 'EST',
// 'offset' => -18000,
// 'offsetHours' => '-05:00'
// ]
<article>
<h2>{{ $post->title }}</h2>
<div class="meta">
Posted {{ format_date_relative($post->published_at) }}
</div>
</article>
<div class="event">
<h3>{{ $event->name }}</h3>
<time>{{ format_date_intl($event->date, 'full', 'none') }}</time>
<p>Starts {{ format_date_relative($event->start_date) }}</p>
</div>
<div class="comment">
<strong>{{ $comment->user->name }}</strong>
<time>{{ format_date_human($comment->created_at) }}</time>
<p>{{ $comment->text }}</p>
</div>