답변

8

는 기술적으로, 더 정확한 주문은 다음과 같습니다

Intl.DateTimeFormat().resolvedOptions().timeZone 

불행하게도, 모든 구현은 현재 Intl API의 시간대 기능을 지원합니다. 따라서 Chrome에서 유효한 IANA 시간대를 반환하지만 아직 FireFox 및 다른 여러 브라우저에서는이를 수행하지 않습니다.

kangax Intl compatibility tableresolvedOptions().timeZone defaults to the host environment 레이블이 붙은 DateTimeFormat 개체 아래에이 기능을 보여줍니다.

은 다음과 파이어 폭스의 작업 항목을 참조하십시오 :

  • Bug 1158733를 - 자바 스크립트 국제화 API
  • Bug 895737에서 시스템 시간대를 감지 - DateTimeFormat은 현재 시간대
  • Bug 837961을 추적하지 않습니다 - IANA 시간대에 대한 지원을 추가 국제화 API에 대한 이름

한편, s :

  • jsTimeZoneDetect - 표준 시간대 추측 작업에 초점을 맞 춥니 다.
  • moment-timezone - 인기있는 moment.js 라이브러리의 애드온이며 사용자의 시간대를 추측하려는 API moment.tz.guess()을 포함합니다.

추가적인 추측 알고리즘을 시도하기 전에 두 가지 모두 사용할 수 있고 작동하는 경우 내부적으로 Intl API를 사용하려고합니다.

표준 시간대 감지/추측에만 의존하지 말고 시간대 선택기 컨트롤에서 적절한 기본 값을 선택하는 것이 가장 좋습니다. 항상 사용자가 원하는 시간대를 선택할 수있는 방법을 제공하십시오. 시간대가 현재 컴퓨터를 사용하도록 설정 한 시간대가 응용 프로그램 내에서 사용하고자하는 시간대 일 수도 있고 그렇지 않을 수도 있기 때문에 중요합니다. 예를 들어, 웹 캘린더 소프트웨어 (예 : Google 캘린더 또는 Outlook.com)를 사용하면 사용자가 사용자 프로필에 시간대를 설정할 수 있습니다.

+0

Firefox를 사용하려고하면 IANA 코드가 표시되지 않지만 "Etc/+ 9GMT"는 표시됩니다. 대신 IANA를받을 수 있습니까? –

+0

정확히 반환 된 것이 확실합니까? DST가없는 UTC-9 시간대에 있다면 '기타/GMT + 9'응답이 유효한 IANA 시간대가됩니다. 하지만 쓴 것은 순서가 다른 문자가 있습니다. –

+0

죄송합니다, 실수. IANA 코드'Asia/Seoul'이 아닌 'Etc/GMT-9'를 항상 반환합니다.Chrome 64bits Mac 61.0.3163.100과 Safari는 완벽하게 작동합니다. Firefox 만 반환합니다. (moment.tz.guess() 또는 jstz.determine() 사용) 둘 다 그와 같은 반환) –

관련 문제