maartenpaauw/laravel-date-time-zone-cast

A Laravel cast to convert strings to DateTimeZone instances

1.0.0 2025-07-27 18:19 UTC

This package is auto-updated.

Last update: 2025-07-27 18:24:43 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

A Laravel cast that allows you to store and retrieve DateTimeZone objects in your Eloquent models. This cast automatically converts timezone strings (e.g. 'Europe/Amsterdam') to PHP DateTimeZone instances and vice versa when interacting with your database.

Support Me

Model States for Filament

You can support me by buying Model States for Filament.

Installation

You can install the package via composer:

composer require maartenpaauw/laravel-date-time-zone-cast

Usage

1. Add the Cast to Your Model

Add the cast to your Eloquent model's $casts array:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Maartenpaauw\LaravelDateTimeZoneCast\DateTimeZoneCast;

class User extends Model
{
    protected $casts = [
        'timezone' => DateTimeZoneCast::class,
    ];
}

2. Database Schema

Ensure your database column is set up to store timezone strings:

Schema::table('users', function (Blueprint $table) {
    $table->string('timezone')->nullable();
});

3. Working with the Model

$user = new User();
$user->timezone = 'Europe/Amsterdam';
$user->save();

$timezone = $user->timezone; // DateTimeZone instance
echo $timezone->getName(); // 'Europe/Amsterdam'

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.