서론
한국 주식시장이 열려있는 시간에만 작동할 수 있도록 짜둔 함수가 있다.
dayjs를 사용해서 사용한 함수였는데,
어느날 이 함수가 정상작동하지 않는다는 것을 확인했다.
라이브러리 문제인가..? 문제 될만한게 없는데..
바로.. 외국에서 해당 함수를 실행시 원하는 방향으로 실행되지 않았던 것...
dayjs를 사용할때 특정 타임존(timezone)을 지정해두지 않아서
외국 시간을 dayjs가 잡아버려서
원하는 방향으로 제대로 작동하지 않았던 것... 또륵
해외에서도라... 오케이ㅇ
시간선을 한국에 맞춰줘야겠구만,
Dayjs Timezone(tz) 설정하기
React 기준으로 사용법은 간단하다.
dayjs와 함께 다른 부수적인 것들을 같이 추가해주면 된다.
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
이렇게 import와 extend를 추가해주면
타임존 지정할 준비를 완벽히 끝냈다고 볼 수 있다.
사용은 아래와 같이 하면된다.
dayjs().tz('Asia/Seoul')
dayjs().tz('America/Toronto')
이제 위와같이 선언하면 각자의 시간이 다르게 나온다~!
이를 통해서 현재 시간이나 특정 시간값을 구할 때
어디를 기준으로 할지 지정할 수 있다.
오? 그럼 이제 그냥 무조건 tz 다 붙여야지 ㄹㅇㅋㅋ
라고 하면 스토프~
그냥 클라이언트의 시간이 필요한 함수들도 존재할 수 있으니
조심스럽게 필요한 함수들을 체크해서 바꾸는것을 추천한다.
아 근데 그럼 dayjs 쓸때마다 tz("....") 속의 내용 붙여서 써줘야 할까?
tz값을 디폴트로 지정할 수도 있다.
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.tz.setDefault("Asia/Seoul") // 디폴트 추가!!
dayjs().tz() // "Asia/Seoul"
이렇게 디폴트 타임존을 설정해두면
tz 사용시에 설정해둔 시간선을 기준으로 값을 가지고 온다~!
* dayjs 사용시의 디폴트 값이 아니라 tz()의 디폴트 값인것에 유의하자!
시간 체크로직에.. 글로벌한 부분도 이제는 신경쓰는
멋쟁이가 되기.
'Front-end' 카테고리의 다른 글
[상태관리] zustand와 함께하는 상태관리 1, 세팅 및 기본기 (0) | 2024.08.20 |
---|---|
[json-server] json 파일 하나로 백엔드 처럼 쓰기 (0) | 2024.08.09 |
node-sass, sass가 뭐야?... Node Sass does not yet support your current environment: OS X Unsupported architecture (0) | 2024.07.17 |
사용하지 않는 Import 자동 삭제 (0) | 2024.07.15 |
어떤 npm package를 많이 쓸까? npm package 한눈에 비교하기 (0) | 2024.07.12 |