앱 혹은 서비스에서 시간 값을 어떤 형태로 저장할지 고민해서 알아봤는데, 생각보다 허무했다.
처음부터 표기법에 대한 오해를 검색으로 풀었더라면 고민하지 않아도 되었을텐데 하는 아쉬움이 크다.
수정: 제가 쓴 글보다 퀄리티가 높은 좋은 글이 있어 공유합니다.
https://parksb.github.io/article/39.html
현재 앱을 만들 때 시간값을 long 형태로 저장중인데, 이게 합리적인지 의심이 들어서.
그리고 문득 당연히 표준이 있을 것 같아서.
우선 둘 다 저장해도 괜찮다.
기본적으로는 String으로 저장하는 편이 좋다
숫자 값 형태로 사용할 일이 더 많다면 Long 형태로 저장해도 된다.
참고: 위키피디아 ISO 8604
ISO 8601 에 따른 표기방법이 있다.
큰 단위(년도)부터 ~ 작은단위(초) 순으로 나열한다.
# 표준 표기 방법
2022-02-12T11:31:24.286Z
TIME ZONE 값이 Zero
라는 의미.
ISO 8601 표준에서 UTC의 오프셋으로써 표현된다.
시간이 UTC인 경우, 시간 뒤에 빈칸없이 Z를 직접 추가해야 한다.
Z는 오프셋이 0인 UTC를 위한 지역 지정자(zone designator)다.
그러므로 "09:30 UTC"는 "09:30Z" 혹은 "0930Z"로 표현된다.
"14:45:15 UTC"는 "14:45:15Z" 혹은 "144515Z"가 될 수 있다.
UTC에서의 오프셋은 위에서 Z를 붙였던 것과 동일한 방법으로 ±[hh]:[mm], ±[hh][mm], 혹은 ±[hh] 형식의 시간 뒤에 덧붙인다.
# Timezone이 고려된 형태 (한국)
2022-02-12T11:31:24+09:00
만약 글로벌 서비스를 생각한다면, offset을 쓰지 않고 Z 로 저장하는 편이 좋다.
ISO 표준이므로 toISOString
메서드를 사용한다.
new Date().toISOString()
console.log(new Date().toISOString())
// 출력값: '2022-02-12T11:31:24.286Z'