[node.js] node.js에서 기본 시간대를 어떻게 설정합니까?

node.js에서 기본 시간대를 어떻게 설정합니까?



답변

이 Google 그룹 스레드 에 따르면 날짜 함수를 호출하기 전에 TZ 환경 변수를 설정할 수 있습니다. 방금 테스트하여 작동합니다.

> process.env.TZ = 'Europe/Amsterdam'
'Europe/Amsterdam'
> d = new Date()
Sat, 24 Mar 2012 05:50:39 GMT
> d.toLocaleTimeString()
'06:50:39'
> ""+d
'Sat Mar 24 2012 06:50:39 GMT+0100 (CET)'

노드는 이미 환경 변수를 읽었으므로 나중에 시간대를 변경할 수 없습니다.


답변

적어도 Linux 환경에서 저에게 효과적 인 또 다른 접근법은 다음과 같이 Node.js 응용 프로그램을 실행하는 것입니다.

env TZ='Europe/Amsterdam' node server.js

최소한 시간대가 이미 처음부터 올바르게 설정되어 있는지 확인해야합니다.


답변

다음은 외부 모듈을 사용하지 않고 NodeJ에서 사용자 정의 시간대 날짜 시간을 가져 오는 100 % 작동 예제입니다.

const nDate = new Date().toLocaleString('en-US', {
  timeZone: 'Asia/Calcutta'
});

console.log(nDate);


답변

불행히도 설정 process.env.TZ이 제대로 작동하지 않습니다 기본적으로 변경이 적용되는시기는 미정입니다).

따라서 노드를 시작하기 전에 시스템 시간대를 설정하는 것이 유일한 옵션입니다.

그러나 그렇게 할 수 없으면 노드 시간 을 해결 방법으로 사용할 수 있습니다. 현지 시간 또는 UTC 시간으로 시간을 가져와 원하는 시간대로 변환하십시오. Nodejs에서 시간대 오프셋을 사용하는 방법을 참조하십시오 . 자세한 내용은.


답변

이 솔루션 env TZ='Europe/Amsterdam' node server.js당신은 같은 건물 도구를 사용하여 응용 프로그램을 시작할 때 특별히 갈래의 프로세스와 작업 할 때 @uhef에서이 앱이 갈래의 프로세스 작업을하지 않는 경우에 작동하지만, 꿀꺽 꿀꺽 , 명령이 gulpENV 값을 취할 것입니다 만, 꿀꺽 꿀꺽 만든 과정 아닌 (앱).

이 문제를 해결하려면 다음을 수행해야합니다.

$ export TZ="Europe/Amsterdam"; gulp myTask

이렇게하면 TZ작업중인 콘솔에서 시작된 모든 프로세스에 대해 환경 변수 가 설정 되며 접두사로 export TZ="Europe/Amsterdam";다시 실행할 필요없이 동일한 콘솔에서 gulp 명령 이후에 실행 된 모든 후속 프로세스가 포함 됩니다.


답변

서버 시간대를 설정하고 NTP 동기화를 사용하십시오. 서버 시간을 변경하는 더 좋은 솔루션이 있습니다.

시간대를 나열하려면

timedatectl list-timezones

시간대를 설정하려면

sudo timedatectl set-timezone America/New_York

시간대 확인

timedatectl

서버 및 데이터베이스에 UTC 시간대를 사용하는 것을 선호합니다. 모든 변환은 클라이언트에서 처리해야합니다. 클라이언트 측에서 moment.js를 사용할 수 있습니다.

많은 인스턴스를 유지 관리하기도 쉬울 것입니다.


답변

이 스레드가 매우 오래되었다는 것을 알고 있지만 이것이 나와 같은 Google에서 온 사람에게 도움이 될 것이라고 생각합니다.

GAE Flex (NodeJs)에서는 app.yaml 파일에서 환경 변수 TZ (앱의 모든 날짜 시간대를 관리하는 변수)를 설정할 수 있습니다.

app.yaml

# [START env]
env_variables:
  # Timezone
  TZ: America/Argentina/Buenos_Aires