-// GregorianCalendar.cs
+// System.Globalization.GregorianCalendar.cs
//
// (C) Ulrich Kunitz 2002
//
namespace System.Globalization {
using System;
+using System.Runtime.InteropServices;
/// <summary>
/// This is the Gregorian calendar.
/// </para>
/// </remarks>
[Serializable]
-[MonoTODO ("Fix serialization compatibility with MS.NET")]
+[ComVisible (true)]
+[MonoLimitation ("Serialization format not compatible with .NET")]
public class GregorianCalendar : Calendar {
+
/// <summary>
/// The era number for the Common Era (C.E.) or Anno Domini (A.D.)
/// respective.
}
}
- [NonSerialized]
- int twoDigitYearMax = 2029;
-
public override int TwoDigitYearMax
{
get {
/// <see cref="T:System.Globalization.GregorianCalendarTypes"/>.
/// </summary>
[NonSerialized]
- internal GregorianCalendarTypes M_CalendarType;
+ internal GregorianCalendarTypes m_type;
/// <value>
/// The property stores the
/// <see cref="T:System.Globalization.GregorianCalendarTypes"/>.
/// </value>
public virtual GregorianCalendarTypes CalendarType {
- get { return M_CalendarType; }
+ get { return m_type; }
set {
CheckReadOnly ();
// mscorlib 1:0:3300:0 doesn't check anything here
- M_CalendarType = value;
+ m_type = value;
}
}
return ADEra;
}
+ [ComVisible (false)]
+ public override int GetLeapMonth (int year, int era)
+ {
+ return 0;
+ }
+
/// <summary>
/// Overridden. Gives the number of the month of the specified
/// date.
return 12;
}
+ [ComVisible (false)]
+ public override int GetWeekOfYear (DateTime time, CalendarWeekRule rule, DayOfWeek firstDayOfWeek)
+ {
+ return base.GetWeekOfYear (time, rule, firstDayOfWeek);
+ }
+
/// <summary>
/// Overridden. Gives the number of the year of the specified
/// date.
/// is out of range.
/// </exception>
public override DateTime ToDateTime(int year, int month, int day,
- int hour, int minute, int second, int milliseconds,
+ int hour, int minute, int second, int millisecond,
int era)
{
M_CheckYMDE(year, month, day, ref era);
- M_CheckHMSM(hour, minute, second, milliseconds);
+ M_CheckHMSM(hour, minute, second, millisecond);
return CCGregorianCalendar.ToDateTime(
year, month, day,
- hour, minute, second, milliseconds);
+ hour, minute, second, millisecond);
}
- [MonoTODO]
public override int ToFourDigitYear(int year)
{
- throw new NotImplementedException();
+ return base.ToFourDigitYear (year);
}
/// <summary>
/// </param>
public GregorianCalendar(GregorianCalendarTypes type) {
CalendarType = type;
- M_AbbrEraNames = new string[] {"C.E."};
- M_EraNames = new string[] {"Common Era"};
- if (M_TwoDigitYearMax == 99)
- M_TwoDigitYearMax = 2029;
+ M_AbbrEraNames = new string[] {"AD"};
+ M_EraNames = new string[] {"A.D."};
+ if (twoDigitYearMax == 99)
+ twoDigitYearMax = 2029;
}
-#if NET_2_0
+#if !NET_2_1
+ [ComVisible (false)]
public override CalendarAlgorithmType AlgorithmType {
get {
return CalendarAlgorithmType.SolarCalendar;
}
}
+#endif
- static DateTime Min = new DateTime (1, 1, 1, 0, 0, 0);
- static DateTime Max = new DateTime (9999, 12, 31, 11, 59, 59);
+ static DateTime? Min, Max;
+ [ComVisible (false)]
public override DateTime MinSupportedDateTime {
get {
- return Min;
+ if (Min == null)
+ Min = new DateTime (1, 1, 1, 0, 0, 0);
+ return Min.Value;
}
}
+ [ComVisible (false)]
public override DateTime MaxSupportedDateTime {
get {
- return Max;
+ if (Max == null)
+ Max = new DateTime (9999, 12, 31, 11, 59, 59);
+ return Max.Value;
}
}
-#endif
/// <summary>
/// Default constructor. Sets the Gregorian calendar type to