2014-06-14 9 views
0

공유 데이터베이스에서 datetime을 가져옵니다. 좀 더 정확하게 나는 timespan을 가져와 Convert.ToDateTime(timespan.ToString())을 통해 datetime으로 변환 중이다. 두 개의 다른 시간대에서 작동하는 두 개의 서버가 있습니다.asp.net datetime serialization은 다른 서버에서 다른 값을 반환합니다.

하나는 /Date(1402761600000)/으로, 다른 하나는 /Date(1402776000000)/으로, 즉 14400000 또는 4 시간의 차이가 반환됩니다.

이것은 다소 시간대와 관련이 있습니다 (GMT -4에 해당).

왜 내 시간이 다르게 반환되고 있습니까? 이것을 막기 위해 무엇을 할 수 있습니까?

+0

데이터베이스 란 무엇입니까? –

+0

@JustinHelgerson, sql server, 실제로는 datetime으로 변환되는 timespan으로 저장됩니다. 정확한 시간은 Convert.ToDateTime (timespan.ToString)입니다. – MushinNoShin

+0

@Mate, 위 참조. 시간은 TZ 정보와 함께 저장되지 않으며 DateTime은 시간대 정보를 제공하지 않습니다. 직렬화하는 동안 시간대가 복잡해지고 있다고 생각합니다. 당연히 그것은 시간대와 관련된 부분 일뿐입니다. – MushinNoShin

답변

1

Convert.ToDateTime은 다른 시간대의 서버에 대해 다른 결과를 얻는 이유는 현지 시간을 반환합니다.

시도 : UTC 시간을 반환합니다

Convert.ToDateTime(ts.ToString()).ToUniversalTime(); 

.

+0

datetime의 종류를 UTC로 지정하여이 문제를 해결했습니다. 'var datetime = Convert.ToDateTime (ts.ToString()); var utcDt = DateTime.SpecifyKind (datetime, DateTimeKind.Utc); 'DateTime.ToUniversalTime()에 대한 문서에서 볼 때 시간이 부적절하게 변경되는 것처럼 보입니다. – MushinNoShin