当前位置: 首页 > 编程语言 > C#

处理WCF反序列化的DateTime对象分享

时间:2023-04-10 17:14:35 C#

处理WCF反序列化的DateTime对象我们有一个正在运行的调度应用程序调用WCF服务来运行夜间作业。其中很多包括有关当前营业日期的信息。出于业务原因,调度服务器设置为格林威治标准时间,但我们的服务在设置为纽约时间的服务器上运行。这就提出了一个问题;日期将连同明确的时区信息一起传递给我们的.NET服务。因此,当服务告诉应用程序以“2008-11-0300:00:00+0:00”的日期运行时,服务将其解释为“2008-11-0219:00:00-5:00”“事情在错误的日期进行。调度程序行为是第3方的并且是硬编码的,所以我们不能告诉调度程序忽略时区偏移量。我们不想总是将日期转换为GMT,因为我们的亚洲办事处很可能会调用相同的服务,我们将回到相同的问题。有没有办法标记DataContract,甚至将其控制在足够低的级别,以确保未指定DateTime类型?或者有没有一种方法可以使用DateTime来确定用于创建它的原始信息是什么,并在后处理步骤中将其转换回原始值?如果有帮助,我们的合同现在相当简单。该方法采用一个参数,该参数是从下面的类派生的类。[DataContract]publicclassBaseTimeSensitiveParameters{[DataMember]publicDateTime?业务日期;如果我正确理解了这个问题,您可以通过在服务器端简单地使用DateTime.ToUniversalTime()来在后期处理中解决这个问题。对于您的示例,这应该为您提供一个值为“2008-11-0300:00:00”且Kind=DateTimeKind.Utc的DateTime。现在,如果您需要相同的值,但Local或Unspecified,您可以使用DateTime。SpecifyKind(DateTime,DateTimeKind)以在不更改值的情况下设置种类。以上就是C#学习教程:处理WCF反序列化DateTime对象共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: