Web服务器在几天内从数据集日期时间减去1小时

时间:2014-01-30 17:28:09

标签: web-services datetime

我们有一台运行Windows 2003 Standard的Web服务器,时区设置为GMT-06:00中部时间,并选中此框以调整夏令时更改。

此服务器上的Web服务查询日期时间字段,并且在获取日期时间时它是正确的。当数据集返回到客户端时,如果日期是3月9日至31日,4月1日至5日,10月26日至31日或11月1日至5日,则从日期时间中减去1小时。这些是DST时间变化可能发生的日期。

将数据保存到数据库时无关紧要。如果我今天保存日期为4/1/2013,则会在1小时后退回给客户。

我们已经验证SQL正确存储日期,因为它正确地返回到Web服务。

如果我在将日期转换为客户端之前将日期转换为Web服务器上的日期字符串,则会返回正确的日期字符串。

可能的DST日期之外的所有日期都很好。

夏令时期间所有可能更改日期的日期都不错。

例如,保存为4/1/2013 12:00:00 AM的日期将在2013年3月31日下午11:00:00返回。

保存为4/6/2013 12:00:00 AM的日期将于4/6/2013 12:00:00 AM返回。

我在Web服务器上添加了一个Web方法,以返回Now()的日期值,并返回正确的日期。

我发现的唯一类似的是关于XML规则的内容,该规则说明所有日期时间值都是使用偏移量传输的。我不是百分百肯定,但我不认为这是因为只有一些日期改变了。

有什么想法/建议,还有什么可以解决这个问题?

修改:我在上面列出的日期找到了一些正确的日期。

1 个答案:

答案 0 :(得分:2)

我会尝试扩展这个问题,因为我在数据对象的序列化方面遇到了类似的问题。

将您要写入的System.DateTime对象放入DataColumn。默认情况下,DateTime对象将DateTime.Kind属性作为[Unspecified]返回。当DataColumn设置为此DateTime对象时,DataColumn具有重置为[UnspecifiedLocal]的DateTimeMode属性。

DataColumn为[未指定]或[UTC]时序列化DateTimeMode期间没有任何错误。但是当DateTimeMode设置为[UnspecifiedLocal]或[Local]时,将应用offeset。这是时间可以上升或下降的位置,具体取决于时区或夏令时配置。

可悲的消息是,我可以分享您的问题,但没有一个像样的解决方案。希望这有助于您的搜索。

我只能想到一些丑陋的解决方案,但我还没有测试过。如果我找到一个优雅的解决方案,我会尝试再次发布。