+2007-08-25 Robert Jordan <robertj@gmx.net>
+
+ * ObjectReader.cs, ObjectWriter.cs, CodeGenerator.cs:
+ Use DateTime.From/ToBinary. Fixes #82400.
+
2007-08-25 Alan McGovern <amcgovern@novell.com>
* ObjectReader.cs, ObjectWriter.cs, CodeGenerator.cs:
break;
case TypeCode.DateTime:
- gen.EmitCall (OpCodes.Call, typeof(DateTime).GetProperty("Ticks").GetGetMethod(), null);
+ gen.EmitCall (OpCodes.Call, typeof(DateTime).GetMethod("ToBinary", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance), null);
EmitWrite (gen, typeof(long));
break;
case TypeCode.DateTime: {
DateTime[] arr = new DateTime [length];
for (int n = 0; n < length; n++) {
- ulong nr = reader.ReadUInt64 ();
- const ulong mask = (1ul << 62) - 1;
- long ticks = (long) (nr & mask);
-#if NET_2_0
- DateTimeKind kind = (DateTimeKind) (nr >> 62);
- arr [n] = new DateTime (ticks, kind);
-#else
- arr [n] = new DateTime (ticks);
-#endif
+ arr [n] = DateTime.FromBinary (reader.ReadInt64 ());
}
val = arr;
break;
return reader.ReadChar();
case TypeCode.DateTime:
- return new DateTime (reader.ReadInt64());
+ return DateTime.FromBinary (reader.ReadInt64());
case TypeCode.Decimal:
return Decimal.Parse (reader.ReadString(), CultureInfo.InvariantCulture);
break;
case TypeCode.DateTime:
- foreach (DateTime item in (DateTime[]) array) {
- ulong val = (ulong) item.Ticks;
-#if NET_2_0
- val |= ((ulong) item.Kind) << 62;
-#endif
- writer.Write (val);
- }
+ foreach (DateTime item in (DateTime[]) array)
+ writer.Write (item.ToBinary ());
break;
case TypeCode.Decimal:
break;
case TypeCode.DateTime:
- writer.Write ( ((DateTime)value).Ticks);
+ writer.Write ( ((DateTime)value).ToBinary ());
break;
case TypeCode.Decimal:
+2007-08-25 Robert Jordan <robertj@gmx.net>
+
+ * DateTime.cs: Implement internal To/FromBinary for the 1.1 profile.
+
2007-08-25 Alan McGovern <amcgovern@novell.com>
* DateTime.cs: Reverted DateTime changes.
case 0:
return new DateTime (dateData, DateTimeKind.Unspecified);
default:
- return new DateTime (((dateData << 2) >> 2), DateTimeKind.Local);
+ return new DateTime (dateData & 0x3fffffffffffffff, DateTimeKind.Local);
}
}
{
return new DateTime (value.Ticks, kind);
}
+
+#else
+
+ internal long ToBinary ()
+ {
+ return Ticks;
+ }
+
+ internal static DateTime FromBinary (long dateData)
+ {
+ return new DateTime (dateData & 0x3fffffffffffffff);
+ }
#endif
public static int DaysInMonth (int year, int month)