case "char": return (char)XmlConvert.ToInt32 (value);
#if NET_2_0
case "dateTime": return XmlConvert.ToDateTime (value, XmlDateTimeSerializationMode.RoundtripKind);
- case "date": return DateTime.ParseExact (value, "yyyy-MM-dd", null);
+ case "date": return XmlConvert.ToDateTime (value).Date;
case "time": return DateTime.ParseExact (value, "HH:mm:ss.FFFFFFF", null);
#else
case "dateTime": return XmlConvert.ToDateTime (value);
- case "date": return DateTime.ParseExact (value, "yyyy-MM-dd", null);
+ case "date": return XmlConvert.ToDateTime (value).Date;
case "time": return DateTime.ParseExact (value, "HH:mm:ss.fffffffzzz", null);
#endif
case "decimal": return XmlConvert.ToDecimal (value);
case "char": return "(char)Int32.Parse (" + value + ", CultureInfo.InvariantCulture)";
#if NET_2_0
case "dateTime": return "XmlConvert.ToDateTime (" + value + ", XmlDateTimeSerializationMode.RoundtripKind)";
- case "date": return "DateTime.ParseExact (" + value + ", \"yyyy-MM-dd\", CultureInfo.InvariantCulture)";
+ case "date": return "XmlConvert.ToDateTime (" + value + ").Date";
case "time": return "DateTime.ParseExact (" + value + ", \"HH:mm:ss.FFFFFFF\", CultureInfo.InvariantCulture)";
#else
case "dateTime": return "XmlConvert.ToDateTime (" + value + ")";
- case "date": return "DateTime.ParseExact (" + value + ", \"yyyy-MM-dd\", CultureInfo.InvariantCulture)";
+ case "date": return "XmlConvert.ToDateTime (" + value + ").Date";
case "time": return "DateTime.ParseExact (" + value + ", \"HH:mm:ss.fffffffzzz\", CultureInfo.InvariantCulture)";
#endif
case "decimal": return "Decimal.Parse (" + value + ", CultureInfo.InvariantCulture)";
} catch (InvalidOperationException) {
}
}
+
+ [Test]
+ public void NotExactDateParse ()
+ {
+ XmlSerializer xs = new XmlSerializer (typeof (NotExactDateParseClass));
+ NotExactDateParseClass o = (NotExactDateParseClass) xs.Deserialize (new StringReader ("<NotExactDateParseClass xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><SomeDate xsi:type=\"xsd:date\">2012-02-05-09:00</SomeDate></NotExactDateParseClass>"));
+ Assert.AreEqual (new DateTime (2012,2,5), o.SomeDate);
+ }
}
}