2009-03-13 8 views
1

웹 응용 프로그램에서 현지 시간을 구현하는 방법을 결정하려고합니다. 모든 사용자가 로그인되어 있지만 익명 사용자는 없습니다. 현지 시간으로 모든 시간 값을 볼 필요가 있습니다.ASP.Net 3.5/SQL Server 2005를 사용하는 웹 사이트에서 TimeZones 사용

어떻게해야합니까?

  1. 모든 날짜 시간 값

    는 각 사용자가 날짜 값을 표시 할 때
  2. , 나는 데이터베이스에서 값을 자신의 프로필에 UTC 오프셋 값을 저장 한
  3. 데이터베이스의 UTC 시간으로 저장됩니다 사용자 오프셋을 적용합니다.

이 방법이 있습니까? 또는 나는 무엇인가 놓치고 있냐?

답변

7

사용자에게 UTC 오프셋을 저장하지 마십시오. 전체 표준 시간대 정보를 알기에 충분하지 않습니다. Olson time zone ID을 저장해야합니다 (예 : "Europe/London". 그런 다음 역사적인 변경 사항, 일광 절약 시간 등을 고려하여 현지 시간으로 UTC 시간을 표시 할 수 있습니다.

편집 : TimeZoneInfo ID는 실제로 정상적인 올슨 형식이 아닙니다. 그러나 뭔가있는 한 합리적인 당신은 사용자에게 (선택 사항으로) 표시 할 수 있고, ID는 나중에 영역을 검색 할 수 있습니다. 아마도 괜찮습니다. 나중에 다른 시스템과 상호 운용해야하는 경우 어려움이있을 수 있습니다.

사용자는 자신의 시간대에 대해 사용자에게 질문해야합니다. 처음에는 JavaScript를 통해 추측하려 할 가능성이 있습니다.

TimeZoneInfo 클래스에 대해 자세히 알아보아야합니다. 많은 것을 직접 사용해 본 것은 아니지만 .NET 3.5로 갈 수있는 방법입니다. 특히 FindSystemTimeZoneByIdGetSystemTimeZones이 중요합니다.

표준 시간대는 일반적으로 통증이지만 적어도 TimeZoneInfo은 이전 TimeZone 유형보다 훨씬 많은 지원을 제공합니다.

+0

+1 내게 다른 것을 보여주기 위해. – TheTXI

+0

세계는 하나의 언어, 한 시간, 물건을 측정하기위한 하나의 시스템 등을 가져야합니다 ... 한숨! ;) 그레이트 지, Jon. – Kjensen

0

나에게 가장 직접적인 방법이라고 들립니다. 내가 볼 수있는 유일한 슬립 업은 일부 지역 (인디애나 일부와 애리조나의 모든 지역)이 일광 절약 시간제와 협력하지 않기 때문에 올바른 시간을 표시하기 위해 별도의 예방 조치를 취해야합니다.