2009-08-29 2 views
2

이 질문은 모든 언어의 모든 프로그래머에게 매우 일반적이라고 생각합니다. 다소 흐릿합니다. 첫째, 문화적 정보와 다른 것들을 캡슐화하는 로케일이 있습니다. 이 로켈 객체는 날짜 및 시간 형식화에 대한 정보, 즉 유니 코드 표준으로 날짜를 표시하는 방법도 캡슐화합니다. 마찬가지로, 예를 들면 : "yyyy-MM-dd'T'HH : mm : ssZ". 모든 국가는 자체 날짜 + 시간 형식 지정 규칙을 가질 수 있으므로 우리는 로케일에 대해 모두 행복하며 사용자는 자신의 지역에서 평소와 같은 형식으로 날짜 + 시간을 얻습니다.날짜의 형식은 사용자의 로켈과 달력 시스템에 따라 다릅니 까?

하지만 지금은 정말 못생긴 부분입니다. 달력이 있습니다. 다른 달력. 그레고리오 어는 미국과 유럽 및 일부 다른 나라와 비슷하지만 히브리어, 유대인 및 무슬림 달력 등이 많이 있습니다. 이제 이러한 달력은 물론 다릅니다. 그들은 1 년의 기간을 다른 길이의 단위로 나누고, 어떤 것은 13 개월을 가질 수 있고, 다른 것은 월요일, 화요일, 수요일 대신 단지 달의 위상을 가질 수 있습니다. 나는 정말로 모른다. 그러나 나는 그중 일부가 그레고리력에 익숙한 누군가에게 매우 이상하게 보인다는 것을 안다.

하지만 흐릿한 것은 지금 : 누가 날짜 + 시간 형식화에 실제로 영향을 줍니까? 로케일? 달력 시스템? 양자 모두? 로케일은 어떤 캘린더 시스템을 사용할지를 보통 알려줍니까? 달력 시스템이 로케일에 어떻게 영향을 미치고 그 반대입니까?

저는이 주제에 대해 거의 하루 종일 검색해 왔으며 거대한 벽돌처럼 보이지 않습니다.

답변

1

사용자는 특정 캘린더 시스템을 사용하기를 좋아하지만 원격 작업 사이트 또는 다른 장소에 있기 때문에 로캘이 다를 수 있습니다.

방탄 캘린더 형식이 필요한 경우 사람들이 해결해야 할 수백 가지 사례가 있습니다.

2

일반적인 운영 체제에는 국제 협약에 의한 그레고리력을 사용하는 날짜 루틴이 있습니다.

로캘은 날짜 정보의 형식을 지정하는 방법과 언어를 결정합니다.

이것은 OS 날짜 기능과는 별도로 다른 달력 시스템의 사용을 중단하지 않지만 국제 통상은 우리가 공통 달력에 동의하도록 요구하지는 않습니까? 나는 그것이 닷넷 framewrk

날짜 시간 변수에 저장된 값에서 작동하는 방법을 설명하려고합니다

+2

예 나는 생각하지만 어쩌면 사용자는해야 할 소프트웨어 나 기타를 사용하여 문화적 또는 종교적 사물을 추적하려고합니다. –

0

은 특정 일 이후 틱의 수입니다. 이것은 사용 된 캘린더와 관계없는 것입니다. 즉 오늘은 캘린더에 관계없이 오늘은 같은 값을 갖게됩니다.

문화권에는 날짜를 인쇄 할 때 사용할 서식 문자열과 달력에 대한 정보가 들어 있습니다. 당신이 먼저 그런 짓을 할 문자열을 포맷하는 시스템을 요청할 때

:

int year = culture.Calendar.GetYear(dt); 
int month = culture.Calendar.GetMonth(dt); 
int day = culture.Calendar.GetDay(dt); 

년은 그레고리력하지만, 다른 일정에 대한 뭔가 다른 2009 년이 될 것입니다.

그 후, 형식 문자열이 출력 올바른 순서 등 때문에

의 값을 사용하는 히브리 로케일 다음 코드를 출력하지 정확한 ISO 일 것이다.

dt.ToString("yyyy-MM-dd'T'HH:mm:ssZ"); 

올바른 방법 중 하나

dt.ToString("yyyy-MM-dd'T'HH:mm:ssZ", CultureInfo.InvariantCulture); 

또는

dt.ToString("s"); 

프레임 워크가 자동으로 "S"형식 지정자의 문화를 무시하기 때문에 후자의 작품 (그리고 몇 가지 다른)

입니다 .

관련 문제