2012-11-16 2 views
1

데이터 집합을 반환하는 .net의 webservice에 액세스 중입니다.TimeZone 변환 문제 .Net Dataset WebService

2012-11-16T00:00:00-05:00 

내 컴퓨터 시간대가 GMT + 1, 당신은 XML에서 날짜를 볼 수있는 다음과 나는 오전 -5

을 가지고 같은 웹 서비스에서 XML을 보면

IT는 날짜를 보여줍니다 VS2005의 웹 참조를 사용하여 데이터 세트를 제공합니다. 나는 데이터 세트에서 날짜를 볼 때

는 그것이 5시

내가 00:00 값을 기대하고 변환 할 수있는 적절한 방법이 확실했다 말합니다.

나는 간단히 5 시간을 감할 수 있지만 일광 절약 시간이 다시 변경 될 때 기다릴 지 확신 할 수 없습니다.

필자는 인터넷 검색을 많이했고 datareader를 사용할 때 비슷한 문제를 발견하고이를 해결하는 방법을 찾았지만 전체 데이터 집합으로 직렬화 될 때 수행 할 작업에 대해서는 이야기하지 않았습니다.

+0

시간대가 다를 때 왜 '00 : 00'을 기대 했습니까? 나는 그것이 '05 : 00'보다는 '06 : 00'이 될 것으로 기대한다. – Oded

답변

2

XML은 로컬 값 (2012-11-16T05 : 00 : 00Z)을 제공합니다. deserialization이 UTC의 DateTime으로 변환되는 것 같습니다. DateTimeKind 속성을 확인하십시오. Utc 인 경우 모두 올바른 것이므로 이 바로 나타납니다. 시간은이며 XML로 표시됩니다.

기대하는 바가 무엇인지, 데이터를 게시하는 항목 또는 실제로 필요한 가치에 대해 분명하지 않습니다. deserialization 코드를 DateTime 대신 DateTimeOffset 대신 사용하도록 변경하면 두 정보가 모두 보존됩니다.

+0

웹 서비스에서 아무 것도 바꿀 수 없습니다. -5는 서버의 위치 때문입니다. GMT 오프셋입니다. 필자는 특정 날짜에 XML이 GMT + 1 인 시간대에서 00:00와 같이 내 위치에 의해 interpereted 된 것으로 보여 졌음을 알았습니다. VisualStudio에 의해 자동 생성 된 것처럼 역 직렬화 코드를 변경하는 방법을 알지 못합니다 ... 모든 포인터가 유용 할 것입니다. – Dorf

+0

형식이 datetime.unspecified입니다. – Dorf

+0

"XML이 있어야하는 특정 날짜를 알고 있습니다. 내 위치에 의해 GMT + 1 인 시간대로 00:00로 보간됩니다. " - 왜? 방법? 이것이 의미하는 데이터가 무엇인지는 분명하지 않습니다. 웹 서비스 *가 로컬 값을 제공해야하는 것처럼 들립니다. 가치 * 항상 * 자정? 그것은 단지 날짜를 나타내는 의미입니까? –