라라벨 created_at, updatead_at 시간을 json으로 뿌려줄때에 무조건 UTC시간으로 나오는거 해결하기

845
0

오랜만에 포스팅… 부동산 문제때문에 정신이 없었다…

라라벨에서 timezone도 제대로 되어있고, 정상적으로 저장된 아이들을 불러와서 object 채로 출력하면 시간이 정상적으로 출력되지만 (laravel 내 timezone을 계산하여 출력되는듯한) 하지만, json으로 toArray() 형태로 뿌려줘버리면, 해당 시간값 (createad_at, updatead_at)은 UTC시간으로 출력된다.

https://laravel.com/docs/7.x/upgrade#date-serialization

라라벨 6에서는 문제 없었지만, 7에서는 문제가 발생한다…

class 모델명 extends Model
{
    protected function serializeDate(DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }
}

해결 방법은 위와 같다.
serializeDate를 추가해줌으로서, UTC 형태(?) JSON 형태(?)가 아닌, 그냥 mysql 저장된 값 원본 그대로 출력해준다.

끝.

추가적으로… timezone에는 Asia/Seoul 로 되어 있어서, model create 할 경우에는 정상적으로 +09:00 시간으로 들어가는데.. 이상한게.. model 을 가져와서 ->save(); 할 경우에는 updatead_at 부분에 +00:00 (UTC)로 저장되는 버그가 있다.

무슨 버그인지 모르겠따… 버그 맞긴한가 ? 흠.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다