* XmlConvert.cs : in 2.0, use F instead of f in dateTime formatting.
* XmlCustomFormatter.cs :
in 2.0, use F instead of f for dateTime formatting.
* XmlSerializationWriterTests.cs, XmlSerializerTests.cs :
fixed wrong dateTime formatting tests.
svn path=/trunk/mcs/; revision=76268
+2007-04-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XmlCustomFormatter.cs :
+ in 2.0, use F instead of f for dateTime formatting.
+
2007-04-25 Atsushi Enomoto <atsushi@ximian.com>
* XmlSchemas.cs : 1.1-only duplicate check does not seem to be
internal static string FromDateTime (DateTime value)
{
+#if NET_2_0
+ return XmlConvert.ToString (value, "yyyy-MM-ddTHH:mm:ss.FFFFFFF");
+#else
return XmlConvert.ToString (value, "yyyy-MM-ddTHH:mm:ss.fffffffzzz");
+#endif
}
internal static string FromTime (DateTime value)
case "boolean": return XmlConvert.ToString ((bool)value);
case "unsignedByte": return XmlConvert.ToString ((byte)value);
case "char": return XmlConvert.ToString ((int)(char)value);
+#if NET_2_0
+ case "dateTime": return XmlConvert.ToString ((DateTime)value, XmlDateTimeSerializationMode.Unspecified);
+ case "date": return ((DateTime)value).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+ case "time": return ((DateTime)value).ToString("HH:mm:ss.FFFFFFF", CultureInfo.InvariantCulture);
+#else
case "dateTime": return XmlConvert.ToString ((DateTime)value);
case "date": return ((DateTime)value).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
case "time": return ((DateTime)value).ToString("HH:mm:ss.fffffffzzz", CultureInfo.InvariantCulture);
+#endif
case "decimal": return XmlConvert.ToString ((decimal)value);
case "double": return XmlConvert.ToString ((double)value);
case "short": return XmlConvert.ToString ((Int16)value);
case "char": return (char)XmlConvert.ToInt32 (value);
case "dateTime": return XmlConvert.ToDateTime (value);
case "date": return DateTime.ParseExact (value, "yyyy-MM-dd", null);
+#if NET_2_0
+ case "time": return DateTime.ParseExact (value, "HH:mm:ss.FFFFFFF", null);
+#else
case "time": return DateTime.ParseExact (value, "HH:mm:ss.fffffffzzz", null);
+#endif
case "decimal": return XmlConvert.ToDecimal (value);
case "double": return XmlConvert.ToDouble (value);
case "short": return XmlConvert.ToInt16 (value);
case "boolean": return "XmlConvert.ToBoolean (" + value + ")";
case "unsignedByte": return "byte.Parse (" + value + ", CultureInfo.InvariantCulture)";
case "char": return "(char)Int32.Parse (" + value + ", CultureInfo.InvariantCulture)";
+#if NET_2_0
+ case "dateTime": return "XmlConvert.ToDateTime (" + value + ", XmlDateTimeSerializationMode.Unspecified)";
+ case "date": return "DateTime.ParseExact (" + value + ", \"yyyy-MM-dd\", CultureInfo.InvariantCulture)";
+ 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 "time": return "DateTime.ParseExact (" + value + ", \"HH:mm:ss.fffffffzzz\", CultureInfo.InvariantCulture)";
+#endif
case "decimal": return "Decimal.Parse (" + value + ", CultureInfo.InvariantCulture)";
case "double": return "XmlConvert.ToDouble (" + value + ")";
case "short": return "Int16.Parse (" + value + ", CultureInfo.InvariantCulture)";
+2007-04-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XmlConvert.cs : in 2.0, use F instead of f in dateTime formatting.
+
2007-04-25 Atsushi Enomoto <atsushi@ximian.com>
* XmlReader.cs : fixed wrong depth comparison in ReadToNextSibling().
switch (mode) {
case XmlDateTimeSerializationMode.Local:
case XmlDateTimeSerializationMode.RoundtripKind:
- default:
- return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.fffffffzzz");
+ return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.FFFFFFFzzz");
case XmlDateTimeSerializationMode.Utc:
- return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.fffffffZ").ToUniversalTime ();
+ return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.FFFFFFFZ").ToUniversalTime ();
case XmlDateTimeSerializationMode.Unspecified:
- return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.fffffff");
+ default:
+ return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.FFFFFFF");
}
}
#endif
case XmlDateTimeSerializationMode.RoundtripKind:
default:
return value.ToString (
- "yyyy-MM-ddTHH:mm:ss.fffffffzzz",
+ "yyyy-MM-ddTHH:mm:ss.FFFFFFFzzz",
CultureInfo.InvariantCulture);
break;
case XmlDateTimeSerializationMode.Utc:
return value.ToUniversalTime ().ToString (
- "yyyy-MM-ddTHH:mm:ss.fffffffZ",
+ "yyyy-MM-ddTHH:mm:ss.FFFFFFFZ",
CultureInfo.InvariantCulture);
break;
case XmlDateTimeSerializationMode.Unspecified:
return value.ToString (
- "yyyy-MM-ddTHH:mm:ss.fffffff",
+ "yyyy-MM-ddTHH:mm:ss.FFFFFFF",
CultureInfo.InvariantCulture);
break;
}
+2007-04-25 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XmlSerializationWriterTests.cs, XmlSerializerTests.cs :
+ fixed wrong dateTime formatting tests.
+
2007-04-24 Atsushi Enomoto <atsushi@ximian.com>
* XmlSerializerTests.cs : another case on #80759 from gert.
public void TestFromDateTime()
{
DateTime d = new DateTime();
+#if NET_2_0
+ Assert.AreEqual ("0001-01-01T00:00:00", FromDateTime (d));
+#else
Assert.AreEqual ("0001-01-01T00:00:00.0000000", FromDateTime (d).Substring (0, 27));
+#endif
}
[Test] // bug #77500
xsw.Reset ();
xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, dateTime, false);
+ // FIXME: This is a bad test case. The following switch
+ // should be applied to the entire test.
+#if NET_2_0
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<x xmlns='{0}'>1973-08-13T00:00:00</x>", ANamespace),
+ xsw.Content, "#1");
+#else
Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
"<x xmlns='{0}'>{1}</x>", ANamespace, FromDateTime (dateTime)),
xsw.Content, "#1");
-
+#endif
xsw.Reset ();
xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, false);
FromDateTime (dateTime)), xsw.Content, "#7");
}
+ // FIXME: This is a bad test case.
+ // See TestWriteTypedPrimitive_DateTime.
[Test]
public void TestWriteTypedPrimitive_DateTime_XsiType ()
{
TimeZone tz = TimeZone.CurrentTimeZone;
TimeSpan off = tz.GetUtcOffset (d);
string sp = string.Format ("{0}{1:00}:{2:00}", off.Ticks >= 0 ? "+" : "", off.Hours, off.Minutes);
+#if NET_2_0
+ Assert.AreEqual (Infoset ("<dateTime>0001-01-01T00:00:00</dateTime>"), WriterText);
+#else
Assert.AreEqual (Infoset ("<dateTime>0001-01-01T00:00:00.0000000" + sp + "</dateTime>"), WriterText);
+#endif
}
/*