c# - 防止反序列化 DateTime 值时进行时区转换

标签 c# datetime xml-serialization timezone

我有一个使用 XmlSerializer 序列化/反序列化的类。此类包含一个 DateTime 字段。

序列化时,DateTime 字段由包含 GMT 偏移量的字符串表示,例如 2010-05-05T09:13:45-05:00。反序列化时,这些时间将转换为执行反序列化的机器的本地时间。

出于不值得解释的原因,我想阻止这种时区转换的发生。序列化发生在野外,存在此类的多个版本。反序列化发生在我控制的服务器上。因此,这似乎最好在反序列化期间处理。

除了实现 IXmlSerializable 并“手动”完成所有反序列化之外,我怎样才能做到这一点?

最佳答案

我所做的,是使用 DateTime.SpecifyKind 方法,如下:

DateTime dateTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified);

这解决了我的问题,希望对您有所帮助。

关于c# - 防止反序列化 DateTime 值时进行时区转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188933/

相关文章:

.net - 无缘无故反序列化以下 XML(来自 REST 服务)时发生异常!

c# - 如何使用 XmlSerializer 将简单集合反序列化为 List<string> 的实例

c# - 与 StreamWriter 异步使用命名管道

c# - ASP 控件中的必需属性

xml - 如何在 VB.NET 中为简单的 XML 序列化编写对象?

python-3.x - 如何在 Pandas 的日期字段中添加/减去固定整数值

java - 如何在java中将 '2017-02-20 09:57:08.512534+00'格式更改为 "dd/MM/yyyy"?

c# - 从存储在数据库中的位置向 bing map 添加形状(bing map ajax 控件)

c# - 从具有特定模式的字符串中检索数字

c# - 将日期格式化为特定格式