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
최소한 시간대가 이미 처음부터 올바르게 설정되어 있는지 확인해야합니다.
안타깝게도 설정 process.env.TZ
이 제대로 작동하지 않습니다. 기본적으로 변경이 적용되는시기는 미정입니다).
따라서 노드를 시작하기 전에 시스템 시간대를 설정하는 것이 유일한 옵션입니다.
그러나 그렇게 할 수 없으면 노드 시간 을 해결 방법으로 사용할 수 있습니다. 현지 시간 또는 UTC 시간으로 시간을 가져 와서 원하는 시간대로 변환하십시오. Nodejs에서 시간대 오프셋을 사용하는 방법을 참조하십시오 . 자세한 내용은.
다음은 외부 모듈을 사용하지 않고 NodeJ에서 사용자 정의 시간대 날짜 시간을 가져 오는 100 % 작동 예제입니다.
const nDate = new Date().toLocaleString('en-US', {
timeZone: 'Asia/Calcutta'
});
console.log(nDate);
이 솔루션 env TZ='Europe/Amsterdam' node server.js
당신은 같은 건물 도구를 사용하여 응용 프로그램을 시작할 때 특별히 갈래의 프로세스와 작업 할 때 @uhef에서이 앱이 갈래의 프로세스 작업을하지 않는 경우에 작동하지만, 꿀꺽 꿀꺽 , 명령이 gulp
ENV 값을 취할 것입니다 만, gulp가 아닌 프로세스 (앱).
이 문제를 해결하려면 다음을 수행해야합니다.
$ 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를 사용할 수 있습니다.
많은 인스턴스를 유지 관리하기도 쉬울 것입니다.
다음은 Node.js 애플리케이션을 Amazon AWS Elastic Beanstalk에 배포하는 사람들을위한 답변입니다 . 나는 다른 곳에서이 문서를 보지 못했다.
에서 Configuration -> Software -> Environment Properties
키 값 쌍 TZ
과 시간대 (예 America/Los Angeles
:)를 설정하고 변경 사항을 적용하십시오.
new Date().toString()
Node 앱에서 출력 하고 시간대 접미사에주의 하여 효과를 확인할 수 있습니다 .
이 스레드가 매우 오래되었다는 것을 알고 있지만 이것이 나와 같은 Google에서 온 사람에게 도움이 될 것이라고 생각합니다.
GAE Flex (NodeJs)에서는 app.yaml 파일에서 환경 변수 TZ (앱의 모든 날짜 시간대를 관리하는 변수)를 설정할 수 있습니다.
app.yaml
# [START env]
env_variables:
# Timezone
TZ: America/Argentina/Buenos_Aires
당신은 순간 시간대 를 취할 수 있습니다 . 위치를 설정하고 일광 절약 시간제를 관리 할 수 있습니다.
Windows의 node.js의 경우 다음을 수행 할 수 있습니다.
full-icu가 설치되어 있으면 날짜 로케일이 올바르게 적용됩니다.
npm i full-icu
또는 전 세계적으로 :npm i -g full-icu
Use toLocaleString() in your code, e.g.:
new Date().toLocaleString('en-AU', { timeZone: 'Australia/Melbourne' })
This will produce something like:
25/02/2019, 3:19:22 pm
. If you prefer 24 hours, 'en-GB' will produce:25/02/2019, 15:19:22
For node.js as Azure web app, in addition to application settings of WEBSITE_TIME_ZONE, you also need to set NODE_ICU_DATA to e.g. <your project>\node_modules\full-icu
, of course after you've done the npm i full-icu. Installing the package globally on Azure is not suggested as that directory is temporary and can be wiped out.
Ref: 1. NodeJS not applying date locales properly
- You can also build node.js with intl options, more information here
Sometimes you may be running code on a virtual server elsewhere - That can get muddy when running NODEJS or other flavors.
Here is a fix that will allow you to use any timezone easily.
Check here for list of timezones
Just put your time zone phrase within the brackets of your FORMAT line.
In this case - I am converting EPOCH to Eastern.
//RE: https://www.npmjs.com/package/date-and-time
const date = require('date-and-time');
let unixEpochTime = (seconds * 1000);
const dd=new Date(unixEpochTime);
let myFormattedDateTime = date.format(dd, 'YYYY/MM/DD HH:mm:ss A [America/New_York]Z');
let myFormattedDateTime24 = date.format(dd, 'YYYY/MM/DD HH:mm:ss [America/New_York]Z');
i work with this npm package unix-system-timezone
참고URL : https://stackoverflow.com/questions/8083410/how-can-i-set-the-default-timezone-in-node-js
'programing tip' 카테고리의 다른 글
C의 객체 파일은 무엇입니까? (0) | 2020.07.07 |
---|---|
html에 vr (수직 규칙)이 있습니까? (0) | 2020.07.07 |
비교 연산자는 null int와 어떻게 작동합니까? (0) | 2020.07.07 |
Xcode에서 "링크 된 프레임 워크"대신 "내장 바이너리"를 언제 사용해야합니까? (0) | 2020.07.07 |
최대 절전 모드-일괄 업데이트가 업데이트에서 예기치 않은 행 개수를 반환했습니다. 0 실제 행 개수 : 0 예상 : 1 (0) | 2020.07.07 |