2012-11-16 44 views
1

我正在访问.net中的Web服务,它将返回一个数据集。TimeZone转换问题.Net数据集WebService

望着从web服务的XML它显示如下

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

我的电脑时区为GMT + 1,你可以看到从XML日期具有-5

我约会在VS2005中使用webreference,它给了我一个数据集。

当我看从数据集中的日期,它说这是05:00

我期待00:00价值,我不能确定转换的正确方法。

我可以简单地减去5小时,但不确定当夏令时再次发生变化时这种情况会持续。

我已经做了大量的搜索,并发现类似的问题,当使用datareader和如何解决它,但没有人谈论如何做时,它被序列化为一个完整的数据集。

+0

当时区不同时,你为什么期待'00:00'?虽然我希望它是'06:00'而不是'05:00'。 – Oded

回答

2

该XML提供了本地值,即2012-11-16T05:00:00Z。这听起来像是反序列化然后将其转换为UTC中的DateTime ...检查DateTimeKind属性...如果它是Utc那么这一切都有意义,并且您正在获得正确的时间用XML表示。

目前还不清楚你期待什么,或者发布什么数据,或者你真正需要什么价值。如果您可以将反序列化代码更改为使用DateTimeOffset而不是DateTime,则可以保留这两条信息。

+0

我无法改变web服务上的任何东西。 -5是由于服务器的位置,那是GMT偏移量。我知道确切的日期,我显示的XML应该是我的位置interpereted作为00:00在我的时区,这是GMT + 1。我不知道如何去改变反序列化代码,因为它是由VisualStudio自动生成的...任何指针都会很好 – Dorf

+0

类型是datetime.unspecified – Dorf

+0

“我知道确切的日期,我表明XML应该是在我的时区,即格林威治标准时间+1时,由我的位置作为00:00进行干预。“ - 为什么?怎么样?目前尚不清楚这些数据意味着什么。这听起来像Web服务*应该*只是提供本地价值。值*总是*是午夜?它只是代表一个日期吗? –