2010-02-17 3 views
2

사용자가 적절한 표준 시간대를 선택해야 이벤트 용 로컬 시간을 올바르게 표시 할 수있는 ASP.NET 웹 응용 프로그램이 있습니다..NET에서 TimeZone 목록을 주문하는 방법은 무엇입니까?

시간대를 선택하는 간단한 방법을 만들 때 나는 TimeZoneInfo.GetSystemTimeZones()의 값을 사용하여 그 목록을 보여주는 것으로 시작했습니다.

우리의 응용 프로그램은 주로 미국을 타겟으로하기 때문에 기본적으로 Eastern Time부터 시작하여 Atlantic 시간에 도달 할 때까지 거꾸로 (West) 작업을하고 싶습니다.

코드에서이 작업을 수행하는 좋은 방법은 무엇입니까?

+0

주문 하시겠습니까? 알파벳순으로, 미국에서 가장 가까운 곳에서, 또는 미국이나 다른 방법을 중심으로 시차가 있습니까? –

+0

나는 미국 동부 지역에서 시작하여 모든 시간대를 원한다. 나는 세계 곳곳까지 올 것이다. – reallyJim

답변

1
LINQ를 사용

:

var timezones = TimeZoneInfo.GetSystemTimeZones(); 
var orderedZones = (from t in timezones 
           where t.DisplayName.Contains("(US & Canada)") 
           select t).Concat(
           from t in timezones 
           where t.DisplayName.Contains("(US & Canada)") == false 
           select t 
           ); 
+0

(expression == false) == (! expression), 따기에 불쌍하다. 첫 번째 문장에 대해 expression == true를 사용하지 않았기 때문에 나에게 의미가있다. –

+0

글쎄, UTC-08 : 00에서 UTC, 그 다음 UTC +로 바뀝니다. – reallyJim

+0

@ Nick- true, 이것은 빠른 해킹이었다. @ reallyJim- UTCOffset을 사용하여 유니언을 독립적으로 주문할 수 있습니다. 그러면 미국 지역이 맨 위에 오름차순으로 그룹이 정렬됩니다. –

0

좋아, 그래서 내 솔루션 : 나는 표시 이름, ID, 나는 데이터베이스에 그들을 원하는 순서를 넣어. 어쨌든 사용자 객체에 ID를 저장하기 때문에 작동합니다. 한 번 잡아서 응용 프로그램 캐시에 저장합니다.

해킹 -하지만 문제를 "해결"합니다.

관련 문제