toLocaleTime($value, "Y-m-d H:i:s.u"); }, ); } protected function started(): Attribute { return Attribute::make( set: function (?string $value) { return $this->toLocaleTime($value); }, ); } protected function prevAction(): Attribute { return Attribute::make( set: function (?string $value) { return $this->toLocaleTime($value); }, ); } protected function lastAction(): Attribute { return Attribute::make( set: function (string $value) { return $this->toLocaleTime($value); }, ); } private function toLocaleTime(?string $time, string $format = "Y-m-d H:i:s"): ?string { static $fromTimezone; static $toTimezone; if ($fromTimezone == null) { $fromTimezone = new DateTimeZone('UTC'); } if ($toTimezone == null) { $toTimezone = new DateTimeZone(config('app.timezone')); } if (empty($time)) { return $time; } // 创建 DateTime 对象 $date = DateTime::createFromFormat($format, $time, $fromTimezone); // 转换时区 $date->setTimezone($toTimezone); // 输出转换后的时间 return $date->format($format); } public static function listEvents(): array { $result = []; foreach (AnnounceEventEnum::cases() as $event) { $result[$event->value] = $event->value; } return $result; } }