2014-01-25 2 views
0

전역으로 실행되는 Asp.Net 웹 응용 프로그램의 경우 데이터베이스 테이블 (SQL Server 2012) 및 모델 속성에 대해 데이터 형식이 DateTimeOffset입니다.asp.net mvc 응용 프로그램에서 날짜 시간을 입력하면 여러 시간대로 실행됩니까?

Asp.Net Mvc 코드 @Html.EditorFor(model => model.TicketLink)은 다음 형식을 허용합니다.

1/1/0001 오전 12시 0분 0초 00 :

00 사용자가 +00 입력하는 것은 조금 추한 : 시간대로 00. (그들은 심지어 그들이 속한 시간대가 무엇인지 알 수 있습니다.) 시간대 입력을 피하고 올바른 방식으로 처리하는 가장 좋은 방법은 무엇입니까?

답변

1

나는 다음과 같은 접근 방식 제안 할 수 있습니다 : 데이터베이스에

  1. 스토어 사용자의 시간대 ID를

  2. 스토어 (날짜 시간의 유형) 지역 형식의 모든 시간 값

  3. (선택 사항) 필요한 경우 추가 필드 (DateTimeOffset 유형)를 만듭니다. 그러나 사용자가 자신의 시간대를 변경하기로 결정하면 이러한 값이 변경 될 수 있습니다.

  4. 필요한 경우 현지 시간대를 표준시로 변환하십시오.

이 방법의 주요 장점은 사용자가 자신의 시간대을 변경할 수 있다는 것입니다. 사용자의 시간대를 데이터베이스에 보관해야합니다. 모든 포럼 소프트웨어는 누군가가 등록을 시도 할 때 시간대를 요구하기 때문에 그것이 올바른 방법이라고 생각됩니다. DateTimeOffset으로 UTC에

변환 날짜 시간 :

 string timezoneId = "W. Europe Standard Time"; 
     TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(timezoneId); 
     var d = new DateTimeOffset(dateTime, tzi.GetUtcOffset(dateTime)).ToUniversalTime(); 

(당신이 ToUniversalTime를 생략 할 수 있습니다)

관련 문제