borsaco/jalali-date-time
Convert dates between Gregorian and Jalali (Shamsi/Hijri Shamsi) calendars in PHP. Simple standalone class or Composer package, with support for dates beyond the 2038 limit.
jdatetime.class.php), it can be integrated without tight coupling to Laravel’s core. However, it lacks Laravel-specific integrations (e.g., Carbon compatibility, Eloquent casting, or Blade directives).DateTime).Carbon bridge).Carbon, CarbonInterval).IntlDateFormatter).voku/portable-ascii + manual conversions).moment-jalaali) for frontend-only needs.composer require borsaco/jalali-date-time.require_once 'vendor/borsaco/jalali-date-time/jdatetime.class.php';
$jalali = new JalaliDateTime('1399/10/10'); // Jalali input
echo $jalali->toGregorian(); // Convert to Gregorian
// app/Helpers/JalaliHelper.php
use Carbon\Carbon;
use JalaliDateTime;
class JalaliHelper {
public static function toJalali(Carbon $carbon): string {
$gregorian = $carbon->format('Y/m/d');
$jalali = new JalaliDateTime($gregorian);
return $jalali->toString();
}
}
use Illuminate\Database\Eloquent\Casts\Attribute;
class JalaliDateCast implements Attribute {
public function get($model, string $key, $value, array $attributes) {
return JalaliHelper::toJalali($value);
}
}
moment-jalaali) for client-side rendering.Blade::directive('jalali', function ($date) {
return "<?php echo app\\Helpers\\JalaliHelper::toJalali(new Carbon({$date})); ?>";
});
| Laravel Component | Compatibility | Workaround Needed? |
|---|---|---|
| Carbon | ❌ No | Yes (custom helper) |
| Eloquent | ❌ No | Yes (custom cast) |
| Blade | ❌ No | Yes (directive/helper) |
| Validation | ❌ No | Yes (custom rule) |
| Database (MySQL) | ⚠️ Partial | Store as Gregorian, convert in app |
| Timezones | ❌ No | Manual handling required |
Gregorian ↔ Jalali conversions in a helper class.mheydari/jalali if available).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Incorrect date conversions | Wrong dates |
How can I help you explore Laravel packages today?