2013-12-24 3 views
1

저는 현재 시간대의 주어진 시간에서 현재 시간대의 같은 시간으로 변환하기 위해 moment.js를 사용하고 있습니다.Moment.js에서 AEST 시간대를 어떻게 사용할 수 있습니까?

내 데이터는 다음과 같은 형식으로 지정됩니다 : 예를 들어, 내가 성공적으로 내 현재 시간대에 지정된 형식으로 순간을 변환 할 수 있습니다

{ 
    "start": "2013-12-10T09:00:00Z", 
    "end": "2013-12-10T11:00:00Z", 
    "timezone": "AEST" 
} 

:

var time = moment('2013-12-24T09:00:00Z').tz('Europe/London'); 
console.log(time.format('DD-MMM-YYYY')); 
console.log(time.format('h:mm:ss a')); 

그러나 'AEST가'있다 내가 Moment.js timezone data builder에서 가져온 표준 시간대 데이터가 아니라 "Aus EST"를 사용합니다. AEST는 공통적 인 약어입니다 (적어도 this Wikipedia page에 따르면).

Moment.js는 특정 표준을 따르고 있습니까? 다른 사람이 누락 된 (또는 다르게 명명 된) 시간대와 관련된 문제를 겪었습니까?

+0

AFAIK "AEST"는 오스트레일리아 동부 표준시를 나타 내기 위해 오스트레일리아에서 자주 사용됩니다. 거기에 머무는 동안 미디어 쇼, 신문 및 온라인 판촉물에서 보았습니다. Moment.js가 "Aus EST"를 선택한 이유에 대한 확신이 없습니다. –

답변

4

순간 - 시간대 데이터 작성기에서 가져 오는 데이터는 시간대 약어로 "Aus EST"를 사용하여 이 아니고이 아닙니다.

moment.tz.add({ 
    "zones": { 
     "Australia/Brisbane": [ 
      "10:12:8 - LMT 1895 10:12:8", 
      "10 Aus EST 1971 10", 
      "10 AQ EST" 
     ] 
    }, 
    "rules": { 
     "Aus": [ 
      "1917 1917 0 1 7 0:1 0 1", 
      "1917 1917 2 25 7 2 0 0", 
      "1942 1942 0 1 7 2 0 1", 
      "1942 1942 2 29 7 2 0 0", 
      "1942 1942 8 27 7 2 0 1", 
      "1943 1944 2 0 8 2 0 0", 
      "1943 1943 9 3 7 2 0 1" 
     ], 
     "AQ": [ 
      "1971 1971 9 0 8 2 2 1", 
      "1972 1972 1 0 8 2 2 0", 
      "1989 1991 9 0 8 2 2 1", 
      "1990 1992 2 1 0 2 2 0" 
     ] 
    }, 
    "links": {} 
}); 

여기 "Aus"는 "호주"라는 레이블이 붙은 내부 규칙를 참조하고, 사용되는 약어 EST 단순히 : 나는 당신이 이런 식으로 뭔가를보고 있기 때문에 당신이 혼란 생각합니다. 이 영역에 대해 "AQ"이라는 두 번째 규칙이 있음을 알 수 있습니다. 이러한 규칙 이름은 레이블 일 뿐이므로 영역 데이터가 참조 할 수 있습니다. 규칙 이름에는주의를 기울이지 않아야하며 여기에 표시된 "Australia/Brisbane"과 같은 영역 이름만으로는 안됩니다.

이 데이터는 IANA/Olson time zone database에서 직접 가져온 것입니다. Moment.js는 좀 더 압축 된 JSON 형식으로 간단하게 컴파일합니다. 호주 here에 대한 원래 규칙을 찾을 수 있습니다.

원하는 경우 AEST 또는 EST를 약어로 사용할지 여부와 관련하여 짧은 파일로 주석을 읽을 수 있습니다. 그러나 지점이 아래로 비등 할 수 있습니다

  • 호주, 많은 단지 그냥 "동부 표준시"대신 "호주 동부 표준시"여기 미국에서
  • 말, 우리는 "미국의 말을 주위에 가지 마세요 동부 표준시 ", 왜 그렇게해야합니까?
  • 우리가 해본 후에도 모두이 될 수 있으므로 도움이되지 않습니다.

실제로 이것은 시간대 약어에 대한 표준이없는 방법의 한 예입니다. 다른 충돌이 있습니다 (예 : 5 가지 이상의 의미가있는 "CST", 3 개 이상의 "IST"및 기타 많은 충돌). 심지어 하와이 같은 "HST"라는 레이블이 붙은 하나의 영역에도 충돌이 있지만 합법적으로 "HAST"(Hawaii-Aleutian Standard Time)입니다. 더 많은 예제를 원할 경우 this list of abbreviations을 사용할 수 있습니다.

일반적으로 디스플레이 이외의 다른 시간대 약어는 사용할 수 없습니다. JSON 데이터에 "AEST"을 전달하면 안됩니다. 대신 "Australia/Brisbane"을 전달하거나 실제 IANA/Olson 시간대 식별자가 무엇이든간에 유효한 영역 식별자의 전체 목록은 here입니다.호주 here에 대한 세부 정보도 검토 할 수 있습니다.

데이터가 타사에서 제공되는 경우 해당 API를 적절하게 변경하도록 요청해야합니다. 실제로 사용할 수 있습니다.

"AEST는"좋은 식별자없는 또 다른 이유는, Australia/Brisbane 같은 지역은 일년 내내 그것을 사용하는 동안 여름 동안 Australia/Sydney 사용 겨울에 AEST 및 AEDT 같은 영역. 따라서 AEST를 사용하는 것만으로는 시간대를 고유하게 식별 할 수 없습니다.

+0

화려한 대답, 설명 할 시간을내어 주셔서 감사합니다! – goodforenergy

관련 문제