Date & Time Formatting

The framework provides 5 powerful date formatting functions that automatically use your configured timezone and locale:

1. format_date() - Standard Formatting

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"

Available Presets

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

2. format_date_intl() - Locale-Aware Formatting

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"

3. format_date_relative() - Relative Time

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"

4. format_date_human() - Human-Friendly Context

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"

5. format_timezone() - Timezone Information

Get detailed timezone information:

$tz = format_timezone('America/New_York');
// Returns:
// [
//     'name' => 'America/New_York',
//     'abbreviation' => 'EST',
//     'offset' => -18000,
//     'offsetHours' => '-05:00'
// ]

Practical Examples

Blog Post Timestamps

<article>
    <h2>{{ $post->title }}</h2>
    <div class="meta">
        Posted {{ format_date_relative($post->published_at) }}
    </div>
</article>

Event Calendar

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

Comment Thread

<div class="comment">
    <strong>{{ $comment->user->name }}</strong>
    <time>{{ format_date_human($comment->created_at) }}</time>
    <p>{{ $comment->text }}</p>
</div>