NodeJS와 date-fns 및 Docker(epoch/unix 형식)를 사용하여 영국 시간 변경(DST) 해결
2050 단어 javascriptnodedockertimezone
Docker 컨테이너에서 date-fns과 함께 NodeJS를 사용할 때 이 간단한 가이드는 문제를 해결하는 방법을 보여줍니다.
new Date();
는 DST와 비교하여 GMT로 시간을 반환할 수 있습니다. 또한 date-fns에서 getUnixTime()
를 사용하면 GMT가 될 에포크 타임스탬프가 반환됩니다. 이것을 다시 BST로 변환하는 것은 어려울 수 있습니다.const { getUnixTime, format } = require("date-fns");
const date = new Date();
console.log('new Date() print',date, '\n');
const unixTime = getUnixTime(date);
const formatted = format(new Date(unixTime * 1000), 'h:mm aa', {
timeZone: 'Europe/London',
});
console.log('formatted timestamp with timezone', formatted);
위의 코드를 실행하면 터미널의 이 스크린샷에 표시된 대로 올바른 BST에 대해 DST를 고려한 타임스탬프가 제공됩니다.
unixTime * 1000
에 대해 궁금하실 수 있습니다. 이는 date-fnsgetUnixTime()
가 밀리초 없이 Unix 타임스탬프를 제공하므로 초로 변환되기 때문입니다.date-fns
format()
함수는 우리가 { timeZone: 'Europe/London', }
를 사용한 이유인 시간대에 대한 세 번째 매개변수를 허용합니다.도커 컨테이너에서 실행 중이고 여전히 GMT 타임스탬프를 반환하는 경우 docker-compose 파일의 환경 섹션의 일부로
- TZ=Europe/London
를 추가하면 컨테이너 시간대를 런던으로 설정하여 문제를 해결하는 데 도움이 됩니다. 아래 예:test:
build: ./test
image: ....
depends_on:
- ....
ports:
- "1234:1234" # http
- "1234:1234" # debug
volumes:
- ....
- ....
- ....
environment:
- PORT=....
- TZ=Europe/London
command: ....
Reference
이 문제에 관하여(NodeJS와 date-fns 및 Docker(epoch/unix 형식)를 사용하여 영국 시간 변경(DST) 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zainzzkk/solve-uk-time-changes-dst-with-nodejs-and-date-fns-and-docker-epochunix-format-2hok텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)