-// 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.
}
}
- int twoDigitYearMax = 2029;
-
public override int TwoDigitYearMax
{
get {
return twoDigitYearMax;
}
set {
+ CheckReadOnly ();
M_ArgumentInRange ("value", value, 100, M_MaxYear);
twoDigitYearMax = value;
/// A protected member storing the
/// <see cref="T:System.Globalization.GregorianCalendarTypes"/>.
/// </summary>
- internal GregorianCalendarTypes M_CalendarType;
+ [NonSerialized]
+ 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 {
- // mscorlib 1:0:33000:0 doesn't check anything here
- M_CalendarType = value;
+ CheckReadOnly ();
+ // mscorlib 1:0:3300:0 doesn't check anything here
+ m_type = value;
}
}
return CCGregorianCalendar.AddMonths(time, months);
}
- [MonoTODO]
- public override DateTime AddWeeks(DateTime time, int weeks)
- {
- throw new NotImplementedException();
- }
-
/// <summary>
/// Overridden. Adds years to a given date.
/// </summary>
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_1
+ [ComVisible (false)]
+ public override CalendarAlgorithmType AlgorithmType {
+ get {
+ return CalendarAlgorithmType.SolarCalendar;
+ }
+ }
+#endif
+
+ static DateTime? Min, Max;
+
+ [ComVisible (false)]
+ public override DateTime MinSupportedDateTime {
+ get {
+ if (Min == null)
+ Min = new DateTime (1, 1, 1, 0, 0, 0);
+ return Min.Value;
+ }
+ }
+
+ [ComVisible (false)]
+ public override DateTime MaxSupportedDateTime {
+ get {
+ if (Max == null)
+ Max = new DateTime (9999, 12, 31, 11, 59, 59);
+ return Max.Value;
+ }
}
/// <summary>