The Best Fluffy Pancakes recipe you will fall in love with. Full of tips and tricks to help you make the best pancakes.
目前使用laravel開發上遇到神奇的事情
已經確認過mariadb上的system_time_zone是Asia/Taipei,time_zone也套用system
在laravel config/app.php設定time_zone為Asia/Taipei,seeder中透過orm寫入的資料到資料庫時間是正確的,在controller透過orm select 出來的資料也是正確的時間,但是經過return response($records, Response::HTTP_OK);
出來到前端得到的資料卻是被-8小時了
用以上問題去問GPT,得到以下回覆
您在 Laravel 開發中遇到的時間偏差問題,可能與 Laravel 7 及之後版本中引入的日期序列化格式變更有關。在這些版本中,Laravel 使用 ISO-8601 格式序列化日期,這可能導致時區顯示問題。
解決方法:
您可以在模型中覆寫 serializeDate 方法,指定日期格式,以確保返回的時間符合預期。
在您的模型中,添加以下方法:
php
複製程式碼
use DateTimeInterface;
protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
這樣,當模型被轉換為 JSON 或陣列時,日期將以 'Y-m-d H:i:s' 格式返回,避免時區偏差問題。
此外,請確保您的 PHP 配置(php.ini)中的 date.timezone 設定為 'Asia/Taipei',以確保 PHP 使用正確的時區。
這些調整應該能夠解決您在前端接收到的時間被減少 8 小時的問題。
不知道底層出了什麼狀況,但終於把卡了幾個小時的問題解了……