1

編集:解決済み、重複: DateTime値の逆シリアル化時のタイムゾーン変換を防止


2000年9月30日を逆シリアル化しようとしたときに、奇妙なバグに遭遇しました。

2000-09-30T00:00:00 + 11:00は、日付を29/09/200011:00:00PMに変換します。

コンバージョンで1日を失うのを防ぐにはどうすればよいですか。

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
 }
}
4

1 に答える 1

2

この日付のXML表示は、UTC+11タイムゾーン用です。http: //www.timeanddate.com/time/map/を参照してください。

したがって、UTC +11タイムゾーンで30日の深夜12時になると、シドニーでは29日午後11時(UTC + 10)になります:-)

于 2012-09-27T06:52:17.723 に答える