copy() : Carbon::parse($value); // سال میلادی نامعتبر / خیلی قدیمی → تبدیل شمسی ممکن است year=0 بدهد if ($carbon->year < 1621 || $carbon->year > 2500) { return null; } $jalali = Jalalian::fromCarbon($carbon); if ($jalali->getYear() < 1000 || $jalali->getYear() > 3000) { return null; } return $jalali; } catch (Throwable $e) { return null; } } public static function format($value, string $format = 'Y/m/d', string $fallback = '-'): string { $jalali = self::fromDateTime($value); return $jalali ? $jalali->format($format) : $fallback; } /** تاریخ میلادی امن به صورت Y-m-d */ public static function toGregorianDate($value, string $fallback = ''): string { if ($value === null || $value === '' || str_starts_with((string) $value, '0000-00-00')) { return $fallback; } try { $carbon = $value instanceof Carbon ? $value->copy() : Carbon::parse($value); if ($carbon->year < 1000 || $carbon->year > 3000) { return $fallback; } return $carbon->format('Y-m-d'); } catch (Throwable $e) { return $fallback; } } }