2012-09-27 51 views
1

編輯:解決,重複:Prevent timezone conversion on deserialization of DateTime valueXML反序列化錯誤地將一個日期


我遇到一個奇怪的錯誤嘗試反序列化9月30日2000年

2000-時09:30T00:00:00 + 11:00將日期變成29/09/2000 11:00:00 PM。

我怎樣才能防止它丟失了一天的轉換:

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

回答

2

這個日期的XML表示對於UTC +11時區,看到http://www.timeanddate.com/time/map/

所以,當它在UTC +11時區的午夜30時是12,在悉尼(UTC + 10)是29日11時:-)

+0

當我更改TimeZone時,同樣的問題仍然存在? –

+0

更改時區後是否重新啓動了Visual Studio? – GTG

+0

+1不,我沒有。我剛剛解決了這個解決方案的問題:http://stackoverflow.com/questions/3188933/prevent-timezone-conversion-on-deserialization-of-datetime-value –