PHP code example of mixudev / laravel-timezone

1. Go to this page and download the library: Download mixudev/laravel-timezone library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

mixudev / laravel-timezone example snippets


return [
    // Status aktif package
    'enabled' => env('TIMEZONE_ENABLED', true),

    // Fallback default server jika timezone klien belum terdeteksi
    'default' => env('TIMEZONE_DEFAULT', config('app.timezone', 'UTC')),

    // Pengaturan header dan cookie dari klien
    'client' => [
        'enabled' => true,
        'header' => 'X-Timezone',
        'cookie' => 'timezone',
    ],

    // Fallback session (dinonaktifkan secara default)
    'session' => [
        'enabled' => false,
        'key' => 'timezone',
    ],

    // Provider timezone model user (dinonaktifkan secara default)
    'user' => [
        'enabled' => false,
        'attribute' => 'timezone',
    ],

    // Resolver IP opsional (dinonaktifkan secara default)
    'ip' => [
        'enabled' => false,
        'resolver' => null,
    ],

    // Preset format tanggal
    'formats' => [
        'datetime' => 'Y-m-d H:i:s',
        'date' => 'Y-m-d',
        'time' => 'H:i:s',
        'human' => 'M j, Y g:i A',
    ],
];

// Format tanggal ke timezone lokal
echo local_time($post->created_at); // "2026-08-30 17:00:00"
echo local_time($post->created_at, 'human'); // "Aug 30, 2026 5:00 PM"
echo local_time($post->created_at, 'relative'); // "5 minutes ago"

// Mengambil objek CarbonImmutable dalam timezone lokal (format diisi null)
$localCarbon = local_time($post->created_at, null);

// Mengambil identifier timezone aktif saat ini
$tz = local_timezone(); // "Asia/Jakarta"

use Mixudev\LaravelTimezone\Facades\Timezone;

// Mengambil timezone aktif pada siklus request saat ini
$tz = Timezone::current(); // "Asia/Jakarta"

// Resolusi timezone untuk instance Request tertentu
$tz = Timezone::resolve($request);

// Konversi tanggal ke timezone lokal atau timezone spesifik (mengembalikan CarbonInterface)
$date = Timezone::convert($user->created_at);
$date = Timezone::convert($user->created_at, 'America/New_York');
$date = Timezone::convert('2026-08-30 10:00:00', 'Asia/Tokyo', 'UTC');

// Alias untuk konversi
$date = Timezone::for($post->published_at);

// Format tanggal
$formatted = Timezone::format($post->created_at, 'datetime');
$relative  = Timezone::format($post->created_at, 'relative');
$custom    = Timezone::format($post->created_at, 'd/m/Y H:i');

// Eksekusi callback dalam konteks timezone sementara (Aman untuk Queue & Octane)
$report = Timezone::in('America/New_York', function () use ($order) {
    return [
        'timezone' => Timezone::current(),
        'placed_at' => Timezone::format($order->created_at, 'human'),
    ];
});

// Validasi identifier IANA
Timezone::isValid('Asia/Jakarta'); // true
Timezone::isValid('Invalid/Zone');  // false

// Daftar seluruh identifier IANA resmi
$timezones = Timezone::list();

use Mixudev\LaravelTimezone\Facades\Timezone;

public function boot(): void
{
    // Menggunakan Closure
    Timezone::useUserProvider(function ($user) {
        return $user->timezone_preference;
    });

    // Atau menggunakan class provider berantarmuka UserTimezoneProviderInterface
    // Timezone::useUserProvider(new CustomUserTimezoneProvider());
}

// Pada bootstrap/app.php (Laravel 11, 12, 13+)
->withMiddleware(function (Middleware $middleware) {
    $middleware->append(\Mixudev\LaravelTimezone\Middleware\DetectTimezone::class);
})

// Atau pada routes/api.php
Route::middleware('timezone')->group(function () {
    Route::get('/orders', [OrderController::class, 'index']);
});

public function handle(): void
{
    Timezone::in($this->user->timezone, function () {
        Mail::to($this->user)->send(new DailySummaryMail());
    });
}
bash
php artisan timezone:install
bash
php artisan vendor:publish --tag=timezone-config
php artisan vendor:publish --tag=timezone-views
php artisan vendor:publish --tag=timezone-assets
bash
# Menampilkan ringkasan status diagnostik resolusi timezone
php artisan timezone:detect

# Validasi identifier timezone tertentu
php artisan timezone:detect --tz=Asia/Jakarta
php artisan timezone:detect --tz=Invalid/Zone

# Membersihkan cache memori dan context memoized
php artisan timezone:clear-cache