XML Deserialize неправильно интерпретирует дату

Изменить: решено, дублировать: Предотвратить преобразование часового пояса о десериализации значения DateTime


Я столкнулся со странной ошибкой при попытке десериализации 30 сентября 2000 года.

2000-09-30T00: 00: 00 + 11: 00 превращает дату в 29.09.2000 23: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
 }
}

person Jeremy Thompson    schedule 27.09.2012    source источник


Ответы (1)


XML-представление этой даты для часового пояса UTC +11, см. http://www.timeanddate.com/time/map/

Итак, когда сейчас 12 часов ночи 30 числа по часовому поясу UTC +11, в Сиднее 11 часов вечера 29 числа (UTC + 10) :-)

person GTG    schedule 27.09.2012
comment
Почему, когда я изменил часовой пояс, проблема не исчезла? - person Jeremy Thompson; 27.09.2012
comment
Вы перезапустили Visual Studio после изменения часового пояса? - person GTG; 27.09.2012
comment
+1 Нет, не знал. Я только что преодолел проблему с этим решением: stackoverflow.com/questions/3188933/ - person Jeremy Thompson; 27.09.2012