防止从服务自动转换日期时间

时间:2014-06-12 14:25:46

标签: c# web-services datetime wsdl

我有一个网站,我从其他供应商处使用网络服务。我从服务中导入了WSDL并将它们添加为服务引用。

当服务发送DateTime参数时,会出现问题,导致.NET客户端自动将接收到的值转换为本地时间。例如:如果DE中的服务器发送08:00:00.000 + 02:00,则Azure网站将识别为06:00:00 Kind:Local,并且因为Azure网站在UTC上工作正常。

但我需要DE服务器的相对时间,因为那些是工作时间,我不能将它们存储为UTC。问题是历史数据,因为UTC没有DaylightSavingTime,如果您显示历史时间,即使在一年中的不同时间转换为客户端时间,也会是不同的时间。

此外:

  • 我可以使用UTC中的记录存储当前偏移量,这是所考虑的解决方案之一。我可以通过计算当前偏移来获得偏移量。
  • 我无法获取字符串值,因为它是导入的WSDL和自动服务引用(或者我可以)
  • 我无法更改引用,因为它会导致构建错误,并且不是一个好习惯
  • 我无法改变服务器发送数据的方式

如果可能,我只想获得原始时间,例如切断时区

编辑:
如果有人知道如何用默认值替换服务反序列化,我也可以制作不同的反序列化器。

EDIT2:
由于生成的代码是部分类,因此最好的解决方案之一是在反序列化之前直接访问字段的字符串。有没有办法做到这一点?

EDIT3:
我发现从UTC转换时间转换为DaylightSavings,所以它可能只是伎俩。但最初的问题仍然存在。

var localDate = TimeZoneInfo.ConvertTime(utcDate,TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"));

0 个答案:

没有答案