프론트엔드/프론트엔드 이슈

프론트엔드에서 서버로 시간을 전송할때 주의할점

syleemomo 2024. 6. 12. 18:57
728x90

* 프론트엔드에서 시간을 저장할때 주의할점


* 서버에서는 로컬시간으로 변경해도 적용이 안되고, UTC시간으로만 저장된다.


* 프론트엔드에서는 서버의 코드를 브라우저에 가져와서 실행하기 때문에, 프론트엔드에서 브라우저가 로컬 PC의 로컬시간을 조회해서 변경할 수 있다. 

* moment(date 문자열).format() 을 하면 로컬시간으로 변경할 수 있고, 이를 서버로 전송하면 몽고 DB 에는 UTC 시간으로 저장된다. 왜냐하면 DATE 객체이기 때문에 몽고 DB는 date 객체를 UTC로 저장한다. 

* 그냥 date 문자열은 17:00 이지만, format()을 사용하면 17:00+09:00 과 같이 로컬시간을 인식할 수 있는 힌트가 붙는다. 이를 서버로 전송하면 DB에 저장할때 17:00에서 9시간을 빼서 08:00 이라는 UTC 시간으로 저장된다. 17:00+09:00 은 17시에서 9시간을 더한다는 의미가 아니라 현재 시간이 17시 로컬시간이고 9시간이 빠르다는 의미다. 그러므로 서버에 저장할때는 17시에서 9시간을 빼서 UTC시간인 8시로 저장된다.

* 만약 date 문자열을 그대로 서버로 전송하면 몽고 DB에는 문자열에 있는 시간 그대로 저장한다. 즉, UTC 시간으로 변경하지 않는다. 왜냐하면 문자열이기 때문이다.

728x90