1. Go to this page and download the library: Download whitecube/laravel-timezones 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/ */
whitecube / laravel-timezones example snippets
// Model:
protected $casts = [
'occurred_at' => TimezonedDatetime::class,
];
// Set a custom timezone
Timezone::set('Europe/Brussels');
// Display dates stored as UTC in the app's timezone:
// (database value: 2022-12-13 09:00:00)
echo $model->occurred_at->format('d.m.Y H:i'); // Output: 13.12.2022 10:00
// Store dates using automatic UTC conversion:
$model->occurred_at = '2022-12-13 20:00:00';
$model->save(); // Database value: 2022-12-13 19:00:00
namespace App\Http\Middleware;
use Closure;
use Whitecube\LaravelTimezones\Facades\Timezone;
class DefineApplicationTimezone
{
public function handle($request, Closure $next)
{
Timezone::set($request->user()->timezone ?? 'Europe/Brussels');
return $next($request);
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Whitecube\LaravelTimezones\Facades\Timezone;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Timezone::set('America/Toronto');
}
}
use Whitecube\LaravelTimezones\Casts\TimezonedDatetime;
use Whitecube\LaravelTimezones\Casts\ImmutableTimezonedDatetime;
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'published_at' => TimezonedDatetime::class,
'birthday' => ImmutableTimezonedDatetime::class . ':Y-m-d',
];
use Carbon\Carbon;
use Whitecube\LaravelTimezones\Facades\Timezone;
// Get the current date configured with the current timezone:
$now = Timezone::now();
// Create a date using the current timezone:
$date = Timezone::date('2023-01-01 00:00:00');
// Alternatively, set the timezone manually on a Carbon instance:
$date = new Carbon('2023-01-01 00:00:00', Timezone::current());
// Convert a date to the current timezone:
$date = Timezone::date(new Carbon('2023-01-01 00:00:00', 'UTC'));
// Alternatively, set the application timezone yourself:
$date = (new Carbon('2023-01-01 00:00:00', 'UTC'))->setTimezone(Timezone::current());
// Convert a date to the storage timezone:
$date = Timezone::store(new Carbon('2023-01-01 00:00:00', 'Europe/Brussels'));
// Alternatively, set the storage timezone yourself:
$date = (new Carbon('2023-01-01 00:00:00', 'Europe/Brussels'))->setTimezone(Timezone::storage());