2016-08-22 4 views
0
내가 특정 시간대에 속하는 날짜 만들 시간대와 moment.js을 사용하고

오프셋 사용 MomentJS을 고려 날짜 시간을 표시하는 방법 :이 생성자는 DST 알고 있기 때문에시간대

var datetime = moment.tz("2016-08-16 21:51:28","Europe/London"); 

을 (일광 절약 시간), moment.js는 +1 시간 오프셋을 자동으로 추가합니다. datetime.format()에 표시됩니다 : 2016-08-16T21:51:28+01:00.

하지만 날짜를 인쇄 할 때 오프셋을 고려하지 않는 것으로 보입니다. 예 : datetime.format('DD.MM.YYYY - HH:mm:ss')이 표시됩니다 : 16.08.2016 - 21:51:28하지만 표시 할 수 없습니다 : 16.08.2016 - 22:51:28 (1 시간의 DST- 오프셋을 고려한 시간). 누구든지이 작업을 수행하는 방법을 알고 있습니까?

+0

이 피들을 참조하십시오. http://jsfiddle.net/pe1gtbgj/ 또한. 설명서가 http://momentjs.com/guides/#/lib-concepts/date-time-math/에 도움이 될 수 있습니다. –

답변

2

출력물을 잘못 해석하고 있습니다.

ISO8601 타임 스탬프의 끝에 +01:00이 표시되면 1 시간을 추가해야한다는 의미는 아닙니다. 주어진 시간 소인은 그 시점에서 UTC보다 1 시간 앞선 현지 표준 시간대에 있음을 의미합니다. 순간에 1 시간이 추가되지 않습니다. 단순히 런던의 현지 시간을 반영한 것입니다.

제공 한 타임 스탬프의 경우 22:51:28으로 표시되는 것은 오류입니다. 런던의 현지 시간은 21:51:28이고 해당하는 UTC 시간은 20:51:28입니다. UTC + 2에서 동쪽으로 한 시간대가 될 때까지 22:51:28을 찾을 수 없습니다. 무엇 이 할을 의미하는 것은 런던 시간으로 UTC에서 을 변환 할 경우

지금, 당신은 UTC로 입력을 만든 다음 변환해야합니다.

moment.utc("2016-08-16 21:51:28").tz("Europe/London") 

그런 다음 요청 결과가 어떤 포맷 할 때 당신은 22:51:28을받을 것입니다,하지만이 시간에 다른 포인트입니다.