siner308 / blog-posts

blog post store
https://github.com/siner308/blog
1 stars 0 forks source link

new Date() 입력시 일어나는 일 - datetime의 저장방식과 api 설계시 주의점 #26

Open siner308 opened 2 years ago

siner308 commented 2 years ago

글로벌 서비스의 사례를 들자

db에서 utc로 저장된 데이터를 가져와서 보여주면 알아서 타임존이 적용되는 케이스는 어떤것인가

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date

스크린샷 2022-06-10 오전 11 20 27

https://tc39.es/proposal-temporal/docs/index.html https://blogs.igalia.com/compilers/2020/06/23/dates-and-times-in-javascript/

https://docs.python.org/3/library/datetime.html

https://github.com/python/cpython/blob/main/Lib/datetime.py https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c

siner308 commented 2 years ago

서버에서 시간을 UTC 기준으로 내려주어 클라이언트에서 9시간 전으로 표기되는 현상을 누구나 한번쯤을 겪어보았을 것이다. 이때마다 서버의 타임존 Asia/Seoul로 변경하였는데, database에서 불러오는 값까지 처리하기 위해서는 db서버의 타임존도 수정해야 하는 등 깔끔하지 못한 처리를 매번 해왔고, 글로벌 서비스의 경우 이러한 처리는 굉장히 나이스하지 못하다고 생각되어 정답이 아닐것이라는 확신이 있었다.

해당 포스트에서는 아래의 내용들에 대해 조사한 내용을 정리 할 것이다.

Date 객체 생성 과정

클라이언트와 서버 모두 사용 가능한 자바스크립트 엔진인 V8을 기준으로 설명하겠다.

데이터베이스에 이를 저장하는 바람직한 방법. (DATETIME vs TIMESTAMP)

DATETIME

TIMESTAMP

결론

클라이언트의 바람직한 localization 방법.