2017-10-22 2 views
9

하여 일정 유형을 얻는 방법 : 그러나 IntlDateFormatter 만 로케일에 날짜 그레고리오 형식을 변환당신이 ICU는 다음 달력 지원다시피 로케일 문자열

Japanese 
Buddhist 
Chinese 
Persian 
Indian 
Islamic 
Hebrew 
Indian 
Coptic 
Ethiopic 

을 자동으로 달력을 변환하지 않습니다, 아직 그것을 캘린더에 보낼 수 있으며 트릭을 수행 할 것입니다. 문제는 각 로켈에 대해 수동으로 달력 시스템을 파악해야한다는 것입니다.

로캘 문자열에서 달력 유형을 얻는 방법. 예를 들어, fa_IR을 보내려면 'persian'을 가져와야하므로 IntleDateFormatter로 보내어 해당 로케일에 대한 데이터 문자열을 생성하십시오.

+0

이것을 고려할 수도 있습니다. 참조 : https://stackoverflow.com/a/44395179/1219741 – jaswrks

답변

3

요약하면; 당신은 할 수 없습니다. 왜?

두 개체가 무엇인지 살펴 보겠습니다. IntlDateFormatter은 다양한 로캘 인식 작업을 수행하기 위해 만들어진 국제화 확장의 일부입니다. 이러한 작업 중에는 날짜 형식 지정자와 로케일 인식 달력이 있습니다.

Locale class은 언어, 문화 또는 지역 고유의 동작을 파악하는 데 사용되는 식별자입니다.

비록 그들이 동일한 연장의 일부분 임에도 불구하고 그들은 here과 같이 직교합니다. 즉, 상대방을 결정할 수 없습니다. 이 진술은 ICU 프로젝트가 제공하는 사용자 안내서에서 더욱 입증되었습니다.

... 현재 모든 로캘은 호환성 로케일 th_TH_TRADITIONAL 및 ja_JP_TRADITIONAL을 제외하고는 그레고리력으로 기본 설정됩니다. "calendar"키워드가 제공되면이 값은 해당 로켈의 기본값을 대체합니다.

Source: User guide ICU project

인용 상태로서 "일정"키워드가 제공하지 않는 한 그레고리력 에 대한 로케일 기본 설정됩니다. 자동으로 제공된 로케일에서 달력을 파생시킬 수 없습니다.

문제에 대한 해결책은 랩퍼를 직접 만들 때 찾을 수 있습니다. 인터넷에서 당신에게 도움이되는 몇 가지 패키지가 있습니다 만, 당신이 정확히 원하는 곳에 가깝지는 않습니다. 날짜를 저장해야하는 경우 타임 스탬프로 저장하고 사용자가 원하는 형식으로 표시합니다. 사용자가 원하는대로 설정하거나 자유롭게 설정할 수 있다면 후자입니다.

답을 구하는 데 영감을 얻은 한 모듈은 GlobalizeJS입니다. open issue이 열리고 흥미를 끄는 것이 얼마나 어려운지에 대한 그림이 그려집니다. 예를 들어 아랍 에미리트 (AE)를 예로 들면 다섯 가지 기본 설정이 있습니다. 그레고리오, 이슬람교 알 - 콰라, 이슬람교, 이슬람 시민 및 이슬람교 표. 사용자가 어떤 캘린더를 선호하는지 결정하게하여 가장 유용합니다.

행운을 빈다.