C# XML反序列化错误地解释了日期

C# XML反序列化错误地解释了日期,c#,datetime,xml-deserialization,C#,Datetime,Xml Deserialization,编辑:已解决,重复: 我在尝试反序列化2000年9月30日的事件时遇到了一个奇怪的错误 2000-09-30T00:00:00+11:00将日期转换为2000年9月29日晚上11:00:00 如何避免在转换过程中损失一天: public class Data { [XmlArray("Times")] [XmlArrayItem("Time")] public List<DateTime> Times { get; set; } public void Test() {

编辑:已解决,重复:


我在尝试反序列化2000年9月30日的事件时遇到了一个奇怪的错误

2000-09-30T00:00:00+11:00将日期转换为2000年9月29日晚上11:00:00

如何避免在转换过程中损失一天:

public class Data
{
[XmlArray("Times")]
[XmlArrayItem("Time")]
public List<DateTime> Times { get; set; }

 public void Test()
 {
    XmlReader xr = XmlReader.Create(new StringReader(@"<Data><Times><Time>2000-09-30T00:00:00+11:00</Time><Time>1900-01-01T06:00:00</Time></Times></Data>"));
    XmlSerializer ser = new XmlSerializer(typeof(Data));
    Data data = (Data)ser.Deserialize(xr);
    // hover over data and see date is the 29th
 }
}
公共类数据
{
[XmlArray(“Times”)]
[XmlArrayItem(“时间”)]
公共列表时间{get;set;}
公开无效测试()
{
XmlReader xr=XmlReader.Create(新的StringReader(@“2000-09-30T00:00:00+11:001900-01-01T06:00:00”);
XmlSerializer ser=新的XmlSerializer(typeof(Data));
数据=(数据)序列反序列化(xr);
//将鼠标悬停在数据上,查看日期是29日
}
}

此日期的XML表示方式适用于UTC+11时区,请参阅


所以,当UTC+11时区30号午夜12点时,悉尼29号晚上11点(UTC+10):-)

为什么我更改时区时,同样的问题仍然存在?更改时区后是否重新启动了Visual Studio?+1不,我没有。我刚刚用这个解决方案解决了这个问题: