Odr*_*ade 28 c# timezone datetime xml-serialization
我有一个我使用序列化/反序列化的类XmlSerializer.该类包含一个DateTime字段.
序列化时,该DateTime字段由包含GMT偏移的字符串表示,例如2010-05-05T09:13:45-05:00.反序列化时,这些时间将转换为执行反序列化的机器的本地时间.
由于不值得解释的原因,我想阻止这种时区转换的发生.序列化发生在野外,其中存在此类的多个版本.反序列化发生在我控制的服务器上.因此,似乎在反序列化期间最好处理这个问题.
除了IXmlSerializable"手动" 执行和执行所有反序列化之外,我怎样才能实现这一点?
小智 30
我做了什么,是使用DateTime.SpecifyKind方法,如下所示:
DateTime dateTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified);
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题,希望这对你有所帮助.
Ada*_*hes 24
DateTime您可以将其解析为a而不是解析,DateTimeOffset并使用该DateTimeOffset.DateTime属性忽略时区.像这样:
[XmlIgnore()]
public DateTime Time { get; set; }
[XmlElement(ElementName = "Time")]
public string XmlTime
{
get { return XmlConvert.ToString(Time, XmlDateTimeSerializationMode.RoundtripKind); }
set { Time = DateTimeOffset.Parse(value).DateTime; }
}
Run Code Online (Sandbox Code Playgroud)