3 // System.Globalization.JulianCalendar.cs
5 // Copyright (C) Wictor Wilén 2001 (wictor@iBizkit.se)
10 // 2001-09-14: First draft
11 // 2001-09-15: First release
20 namespace System.Globalization
25 /// Summary description for JulianCalendar.
27 public class JulianCalendar : System.Globalization.Calendar
31 // Public Static (Shared) Fields
33 public static int JulianEra
41 // Public Instance Constructors
43 public JulianCalendar()
47 // Public Instance Properties
49 public override int[] Eras
57 public override int TwoDigitYearMax
61 return _TwoDigitYearMax;
65 _TwoDigitYearMax = value;
69 // Public Instance Methods
71 public override DateTime AddMonths ( DateTime time, int months )
73 if(months < -120000 || months > 120000)
74 throw new System.ArgumentOutOfRangeException();
75 DateTime dt = new DateTime(time.Ticks);
76 dt = dt.AddMonths(months);
81 public override DateTime AddYears ( DateTime time, int years )
83 DateTime dt = new DateTime(time.Ticks);
84 return dt.AddYears(years);
88 public override int GetDayOfMonth ( DateTime time )
94 public override DayOfWeek GetDayOfWeek ( DateTime time )
96 return time.DayOfWeek;
100 public override int GetDayOfYear ( DateTime time )
102 return time.DayOfYear;
106 public override int GetDaysInMonth ( int year, int month, int era )
108 if( year < _MinYear || year > _MaxYear ||
109 month < _MinMonth || month > _MaxMonth ||
111 throw new System.ArgumentOutOfRangeException();
113 if(this.IsLeapYear(year))
114 return _DaysInMonthLeap[month];
116 return _DaysInMonth[month];
121 public override int GetDaysInYear ( int year, int era )
123 if(year < _MinYear || year > _MaxYear || era != JulianEra)
124 throw new System.ArgumentOutOfRangeException();
125 return this.GetDaysInYear(year);
129 public override int GetEra ( DateTime time )
134 public override int GetMonth ( DateTime time )
140 public override int GetMonthsInYear ( int year, int era )
142 if(year < _MinYear || year > _MaxYear || era != JulianEra)
143 throw new System.ArgumentOutOfRangeException();
148 public override int GetYear ( DateTime time )
154 public override bool IsLeapDay ( int year, int month, int day, int era )
158 if(day < _MinDay || month < _MinMonth || month > _MaxMonth)
159 throw new System.ArgumentOutOfRangeException();
161 if(this.IsLeapYear(year,era))
162 dim = _DaysInMonthLeap[month-1];
164 dim = _DaysInMonth[month-1];
167 throw new System.ArgumentOutOfRangeException();
169 if( month == 2 && day == 29)
175 public override bool IsLeapMonth ( int year, int month )
177 if( year < _MinYear || year > _MaxYear || month < _MinMonth || month > _MaxMonth)
178 throw new System.ArgumentException();
182 public override bool IsLeapMonth ( int year, int month, int era )
184 if( year < _MinYear || year > _MaxYear || month < _MinMonth || month > _MaxMonth || era != JulianEra)
185 throw new System.ArgumentException();
190 public override bool IsLeapYear ( int year, int era )
192 if(year < _MinYear || year > _MaxYear || era != JulianEra)
193 throw new System.ArgumentOutOfRangeException();
200 public override DateTime ToDateTime ( int year, int month, int day, int hour, int minute, int second, int millisecond, int era )
202 // INFO: year, era and month is checked by GetDaysInMonth()
204 dim = GetDaysInMonth(year,month);
205 if( day < _MinDay || day > dim ||
206 hour < _MinHour || hour > _MaxHour ||
207 minute < _MinMinute || minute > _MaxMinute ||
208 second < _MinSecond || second > _MaxSecond ||
209 millisecond < _MinMillisecond || millisecond > _MaxMillisecond)
210 throw new System.ArgumentOutOfRangeException();
212 return new DateTime(year,month,day,hour,minute,second,millisecond,this);
216 public override int ToFourDigitYear ( int year )
218 int y = _TwoDigitYearMax % 100;
220 y = _TwoDigitYearMax - y - 100 + year;
222 y = _TwoDigitYearMax - y + year;
224 if( y < _MinYear || y > _MaxYear)
225 throw new System.ArgumentException();