ASP.NET MVC 5를 사용하여 응용 프로그램을 작성하고 있습니다. 데이터베이스에 저장하려고하는 모든 datetime을 로컬 표준 시간대에서 UTC 표준 시간대로 먼저 변환해야합니다.Entity Framework에서 저장시 datetime 필드를 UTC로 자동 변환 할 수 있습니까?
요청주기 중 가장 적합한 장소는 어디인지 알 수 없습니다.
ViewModel 규칙을 통과 한 후 컨트롤러에서 각 필드를 UTC로 변환 할 수 있습니다. 그러나 나는 이것이 너무 많은 코드/단계라고 생각합니다.
Entity Framework에서 변경 사항을 저장하기 전에 datetime을 UTC로 자동 변환하는 규칙을 추가 할 수있는 방법이 있습니까?
이
날 전에 자동으로 UTC로 날짜를 변환하는 규칙을 추가 할 수 엔티티 프레임 워크의 방법 나는 그 UTCpublic static DateTime? ConvertToUTC(DateTime? val, TimeZoneInfo destinationTimeZone = null)
{
if (val != null)
{
var dateTimeToConvert = ConvertToDateTime(val);
if (destinationTimeZone == null)
{
if (ConfigurationManager.AppSettings["LocalTimeZone"] != null)
{
destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById(ConfigurationManager.AppSettings["LocalTimeZone"]);
}
else
{
destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName);
}
}
return TimeZoneInfo.ConvertTimeFromUtc(dateTimeToConvert, destinationTimeZone);
}
return null;
}
가장 좋은 장소는 클라이언트에서 수행하는 것입니다. 클라이언트 만 자신이 속한 시간대를 알고 있으며 클라이언트가 UTC 또는 DateTimeOffset 유형으로 날짜 시간을 보내야합니다. 서버에서 수행하지 마십시오. 모든 클라이언트가 서버와 동일한 시간대 (* 인트라넷 웹 응용 프로그램에서 작동 할 수 있음)에서 실행 중이라고가 정할 수 없다면 너무 늦은 것입니다. datetime을 보내고 클라이언트에 UTC로 보내고 클라이언트가 로케일로 변환하도록합니다. 이것을 잘 처리하는 클라이언트 측 라이브러리가 있습니다. – Igor
사용자 프로필에서 사용자의 현지 시간대를 알고 있습니다. 모든 것은 그것에서 파생됩니다. – Jaylen
사용자가 여행하나요? 사용자 Bob이 뉴욕에서 L.A로 여행하면 어떻게됩니까? 그리고 나서 Bob은 속성으로 DateTime을 가진 DB에 무엇인가 커밋하거나 DateTime 속성을 가진 무언가를 검색합니까? Bob이 전에 자신의 시간대 정보를 업데이트했는지 확인해야합니다. 어쩌면 Bob이 새로운 시간대로 이동하면 작동하지만, Bob이 다른 시간대를 자주 방문하는 여행자 인 경우 관리가 어려워집니다. – Igor