2014-09-09 4 views
0

시간대, DST 및 Node.js에 문제가 있습니다. DST 효과를 올바르게 식별하지 못합니다. 내 OS는 Windows 8.1이며 시간대 값과 DST가 올바로 설정되어 있습니다.일광 절약 시간이 Node.js에서 잘못 식별되었습니다.

1) 노드의 날짜 개체

내가 노드 프롬프트에 다음 코드를 입력 및 기울임에서 답받은 :

new Date() 

화 2014년 9월 9일 (18) 나는이 두 가지 방법을 시도 : 42:36 GMT-0200 (브라질 일광 절약 시간제 Horario brasileiro de verão)

그러나 브라질 DST는 10 월 19 일에 시작되며 DST에 없습니다. 지금. 따라서 시간은 1 시간 후에 변경됩니다.

2)는 NPM에서 노드 타임 패키지를 가지고

노드 시간은 시간대를 변경할 수 있습니다. 코드에서 :

time = require('time'); 
dateFormat = require('dateformat'); 

now = time.Date(); 
console.log(dateFormat(now.setTimezone('America/Sao_Paulo').getTime(), "yyyy-mm-dd HH:MM:ss Z")) 

그 결과로, 나는

브라질 정상 시간대는 GMT-0300입니다

2014년 9월 9일 그리니치 표준시 18시 42분 36초-0200 얻었다. 시간도 1 시간 이동했습니다.

내가 잘못 했나요? 해결 방법이 있습니까?

답변

1

노드 타임 패키지 does not work on Windows. 설치가되지 않아서 어떻게했는지 잘 모르겠습니다. 제거해야합니다.

노드 (또는 브라우저)에서 외부 지역 시간대를 지원해야하는 경우 에 moment-timezone 플러그인을 사용하는 것이 좋습니다.

브라질에서 시간대를 설정 한 Windows에서 new Date()을 실행하면 올바른 결과를 얻습니다. 시간대 레지스트리 설정이 수정 된 경우

Time Zone Settings

tzutil output

node output

결과를 설명 할 수있는 유일한 방법입니다 -하지만 당신은 또한 당신의 시스템에 잘못된 시간을 볼 것 귀하의 작업 표시 줄에 시계. 미안하지만 그 부분을 재현 할 수는 없습니다.

+0

안녕하세요 Matt! 고마워. 사실, 시간대는 (성공적으로 설치되었지만) 노드 타임 패키지에는 아무런 영향을주지 않습니다. 내가 얻은 오류는 설정하고 잊어 버린 TZ env 변수 때문입니다. 노드에서 [moment-timezone] (http://momentjs.com/timezone/docs/)을 설치하기에 충분했지만 이제는 완벽하게 작동합니다. – Joaobrunoah