datetime 값이있는 레코드를받는 WCF 서비스가 있고 Entity Framework 3.5, SP1을 사용하여 Azure SQL 데이터베이스에 저장합니다. 로컬로 실행, 레코드가 데이터베이스에 저장받을 모든 그러나 내 IIS 호스팅이 다른 시간대에WCF to Entity Framework에서 내 datetime을 현지 시간으로 변환합니다. 어떻게 중지합니까?
물론이다. 사이트를 업로드하고 동일한 서비스 (동일한 연결 문자열을 사용하여 Azure SQL 데이터베이스에 연결)를 호출해도 레코드는 여전히 저장되지만 시간은 5 시간 뒤로 이동했습니다.
나는 Fiddler를 체크하여 나가는 데이터를 보았고, 그것은 현지 시간이었다. 나는 Azure 호스팅 내에서 동일한 서비스를 사용했고, 그것도 잘 저장되었습니다. Linq2SQL과 함께 저장되는 동일한 호스트의 다른 WCF 서비스에 동일한 데이터가 전달되어 저장이 잘됩니다.
유일한 차이점은 Entity Framework입니다. 시간대 정보 (GMT)가 datetime과 함께 전송되므로 동부 해안 시간의 서버가이를 받으면 로컬 시간으로 변환합니다. 5 몇 시간 일찍.
순간적으로 (13:48) 5 시간 더지기 때문에 (08:48) 데이터베이스에서 저장하고 싶지 않으므로 저장하고 싶습니다. 13:48. 나는 그것을하도록 요청, 그래서 이것은 아마도 정말 간단하고, 다른 사람들이 답을 알고 있지만, 나는 조금 의아해 오전 내가
를 쿼리 의미가있다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 고마워.
많은 감사
토비
트릭을 수행하는 것 같은 해결 방법이있다. 원래 datetime을 정의 할 때 클라이언트, Utc. 서버의 내 도우미 클래스는 또한 Utc로 지정합니다. 그런 식으로 올바른 날짜가 저장됩니다 GMT는 UTC이므로 이것은 우연히 만난 것일 수 있습니다. 이것은 여름철로 이동할 때 3 개월 만에 작동하지 않을 수도 있습니다. "ToLocaltime()"으로 변환 하시겠습니까? 그때 일하니? 흠, dunno 더 이상 아이디어를 저장하지 않고 시간을 절약 하시겠습니까? – TobyEvans
아니요, ToLocalTime() 또는 ToUniversalTime()을 사용하지 마십시오. 실행중인 시스템의 시간대를 사용하여 표준 시간대 보정을 적용합니다. 그게 당신이 풀려고했던 문제이지 반복은 아닙니다. 항상 UTC로 변환하면 절대 시간이므로 일광 절약 시간제로 조정되지 않습니다. .NET 3.5 이상을 사용하는 경우 TimeZoneInfo.ConvertTimeFromUtc() 및 ConvertTimeToUtc()를 TimeZoneInfo 개체와 함께 사용하여 변환을 명시해야합니다. 나는 그것들을 사용했고 의도 한대로 작동합니다. – Suncat2000