. */ declare(strict_types=1); namespace Fisharebest\Webtrees; use Carbon\CarbonImmutable; use Fisharebest\Localization\Locale\LocaleInterface; use function unixtojd; /** * A wrapper around CarbonImmutable dates. * * The future of nesbot/carbon seems uncertain. We can always swap it out * for carbondate/carbon, cake-php/chronos or some other datetime class. */ class Carbon extends CarbonImmutable { /** * We use julian days extensively, so a helper function to convert. * unixtojd() can return false if timestamp is out of range. */ public function julianDay(): int { return (int) unixtojd($this->timestamp); } /** * Create a local timestamp for the current user. * * @return Carbon */ public function local(): Carbon { $locale = app(LocaleInterface::class)->code(); $timezone = Auth::user()->getPreference('TIMEZONE', Site::getPreference('TIMEZONE', 'UTC')); return $this->locale($locale)->setTimezone($timezone); } }