2009-08-24 3 views
39

내 사이트에서 사람들에게 적절한 시간에 메시지를 표시하기 위해 사람들이있는 시간대를 알아야합니다. 이 작업을 수행하는 방법에 대한 자습서의 관점에서 무엇을 검색해야하는지 잘 모르겠습니다.ASP.NET MVC에서 시간대를 만드는 방법은 무엇입니까?

내가 수행 할 계획은 사용자가 내 사이트를 방문 할 때 드롭 다운 목록에서 해당 사용자를 선택하여 시간대를 설정하는 것입니다. 내 데이터베이스에 설정을 저장하고 시간을 계산하는 데 사용합니다.

내가 무엇이 필요한지 잘 모르겠습니다. 내 데이터베이스 시간을 저장해야하는 이유는 무엇입니까? 나는 그것이 어딘가에 UTC로 저장되어야한다는 것을 읽었다. 이 작업을 수행하려면 데이터베이스를 어떻게 설정해야합니까? 또한 공유 호스팅 사이트에 있으므로 웹 사이트를 통해 할 수있는 방식으로 설정해야합니다.

다음으로 HTML 헬퍼 또는 일반 HTML로 모든 시간대 목록이 필요합니다. 나는 정말로 그것을 만들고 싶지 않다.

그런데, 내가 말했듯이, 나에게 무엇을 할지를 보여주는 튜토리얼이 필요하다. 그 시간에 물건을 더하고 빼는 것 같지만 잘못 될 수 있습니다.

답변

36

이렇게하려면 데이터베이스에 UTC로 타임 스탬프를 저장해야합니다. 사이트의 데이터베이스에서 날짜를 표시해야하는 경우

, 당신은이 작업을 수행 할 수 있습니다 : 당신이 this post on how to enumerate them를 볼 수 있도록

DateTime stamp = /* get datetime from the database here, make sure you 
        use the constructor that allows you to specify the 
        DateTimeKind as UTC. */ 

//E.g. 
//DateTime stamp = new DateTime(2009, 12, 12, 12, 12, 12, DateTimeKind.Utc); 

timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(" /* users time zone here */"); 
var convertedTime = TimeZoneInfo.ConvertTime(stamp, timeZoneInfo); 

//Print out the date and time 
//Console.WriteLine(convertedTime.ToString("yyyy-MM-dd HH-mm-ss")); 

시간대의 목록은 닷넷에서 이미 사용할 수 있습니다. ASP.Net MVC의 경우 시간 제한을 인쇄하는 대신 변환 된 datetime을 모델 클래스의 속성에 할당하여보기에서이를 사용할 수 있습니다.

+0

안녕하세요, 저는 이것을 구현하려고합니다. 나는 다른 것을 알지 못한다. 사용자가 내 사이트에오고 있으며 DB를 통해 원하는 표준 시간대에 표시 할 메시지를 확인하고 싶습니다. 처음에는 시간이 무엇인지 파악한 다음 UTC로 변환합니까? 그런 다음 어디에서 그것을합니까? 당신의 예에서 당신이하는 일과는 반대로 말입니다. – chobo2

+0

글쎄, 처음에는 사용자가 자신의 시간대를 설정할 수 있다고 언급했다. 그러나, 자바 스크립트를 통해 사용자의 시간대를 검색하는 방법은 여러 가지가 있습니다. 예를 들어이 게시물과 같은 자세한 정보를 보려면 stackoverflow에서 검색 할 수 있습니다. http://stackoverflow.com/questions/1017053/finding-the-clients-timezone- and-culture-via-web-service – womp

+0

나는 그들과 함께 시간대를 선택하고 정말로 자바 스크립트를 들여다보고 싶지 않다. 나는 그저 내 데이터베이스에서 특정 날짜를 찾기 시작할 것이라고 말하고있는 중입니까? UTF로 다시 변환하려고합니까? – chobo2

2

먼저 MSDN에 DateTime 설명서가 있는지 확인하고 읽어보십시오. Here is an article은 시간대와 UTC를 다루는 DateTime 모범 사례에 대해 설명합니다.

예, 데이터베이스에 UTC를 저장해야합니다. UTC로 DateTimes를 저장하면 선택한 시간대를 기준으로 사용자에게 시간을 번역 할 수 있습니다. 너는 바른 길을 가고있다!

9

작성하는 응용 프로그램의 저장 및 처리에 UTC를 사용하는 것이 얼마나 중요한지 강조 할 수 없습니다. 응용 프로그램이 단일 시간대에서만 사용된다는 것을 알고 있더라도 일광 절약 시간 문제로 인해 UTC로 작업하는 것이 현지 시간대보다 훨씬 쉽습니다.

데이터베이스 수준에서 수행해야 할 특별한 작업은 없습니다. 일반적인 datetime 열을 만들지 만 열이 UTC로 가정되었다는 것을 분명히 문서화해야합니다.

솔직히 말해서, asp.net은 나의 전문 지식이 아니지만 클라이언트 요청으로부터 어떻게 든 시간대를 얻을 수 있다고 생각합니다. 사실, 지역에 따라 일광 절약 시간 규칙이 꽤 흐릿해질 수 있기 때문에 UTC 오프셋을 계산하고이를 사용하여 변환을 수행하는 Java 스크립트를 사용하는 것이 좋습니다. 심지어 2005 년 에너지 정책 법 후에도 서버 측에서 처리하기가 다소 어려울 수있는 DST 규칙에 대한 몇 가지 예외가 여전히 있습니다. 그러나, 나는 당신이 클라이언트가 자신의 시간대를 설정하도록 허용하는 아이디어가 대부분의 경우 잘 작동 할 것이라고 생각한다.

관련 문제