Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
GregorianCalendar.cs
Go to the documentation of this file.
2
4{
5 public const int ADEra = 1;
6
8
9 private static readonly int[] DaysToMonth365 = new int[13]
10 {
11 0, 31, 59, 90, 120, 151, 181, 212, 243, 273,
12 304, 334, 365
13 };
14
15 private static readonly int[] DaysToMonth366 = new int[13]
16 {
17 0, 31, 60, 91, 121, 152, 182, 213, 244, 274,
18 305, 335, 366
19 };
20
21 private static volatile Calendar s_defaultInstance;
22
24
26
28
30 {
31 get
32 {
33 return _type;
34 }
35 set
36 {
38 if (value < GregorianCalendarTypes.Localized || value > GregorianCalendarTypes.TransliteratedFrench)
39 {
41 }
42 _type = value;
43 }
44 }
45
46 internal override CalendarId ID => (CalendarId)_type;
47
48 public override int[] Eras => new int[1] { 1 };
49
50 public override int TwoDigitYearMax
51 {
52 get
53 {
54 if (_twoDigitYearMax == -1)
55 {
57 }
58 return _twoDigitYearMax;
59 }
60 set
61 {
63 if (value < 99 || value > 9999)
64 {
66 }
68 }
69 }
70
71 internal static Calendar GetDefaultInstance()
72 {
74 }
75
78 {
79 }
80
82 {
83 if (type < GregorianCalendarTypes.Localized || type > GregorianCalendarTypes.TransliteratedFrench)
84 {
86 }
87 _type = type;
88 }
89
90 internal static long GetAbsoluteDate(int year, int month, int day)
91 {
92 if (year >= 1 && year <= 9999 && month >= 1 && month <= 12)
93 {
94 int[] array = ((year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? DaysToMonth366 : DaysToMonth365);
95 if (day >= 1 && day <= array[month] - array[month - 1])
96 {
97 int num = year - 1;
98 return num * 365 + num / 4 - num / 100 + num / 400 + array[month - 1] + day - 1;
99 }
100 }
102 }
103
104 internal virtual long DateToTicks(int year, int month, int day)
105 {
106 return GetAbsoluteDate(year, month, day) * 864000000000L;
107 }
108
109 public override DateTime AddMonths(DateTime time, int months)
110 {
111 if (months < -120000 || months > 120000)
112 {
113 throw new ArgumentOutOfRangeException("months", months, SR.Format(SR.ArgumentOutOfRange_Range, -120000, 120000));
114 }
115 time.GetDate(out var year, out var month, out var day);
116 int num = month - 1 + months;
117 if (num >= 0)
118 {
119 month = num % 12 + 1;
120 year += num / 12;
121 }
122 else
123 {
124 month = 12 + (num + 1) % 12;
125 year += (num - 11) / 12;
126 }
127 int[] array = ((year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? DaysToMonth366 : DaysToMonth365);
128 int num2 = array[month] - array[month - 1];
129 if (day > num2)
130 {
131 day = num2;
132 }
133 long ticks = DateToTicks(year, month, day) + time.Ticks % 864000000000L;
135 return new DateTime(ticks);
136 }
137
138 public override DateTime AddYears(DateTime time, int years)
139 {
140 return AddMonths(time, years * 12);
141 }
142
143 public override int GetDayOfMonth(DateTime time)
144 {
145 return time.Day;
146 }
147
148 public override DayOfWeek GetDayOfWeek(DateTime time)
149 {
150 return time.DayOfWeek;
151 }
152
153 public override int GetDayOfYear(DateTime time)
154 {
155 return time.DayOfYear;
156 }
157
158 public override int GetDaysInMonth(int year, int month, int era)
159 {
160 if (era != 0 && era != 1)
161 {
163 }
164 return DateTime.DaysInMonth(year, month);
165 }
166
167 public override int GetDaysInYear(int year, int era)
168 {
169 if (era != 0 && era != 1)
170 {
172 }
174 {
175 return 365;
176 }
177 return 366;
178 }
179
180 public override int GetEra(DateTime time)
181 {
182 return 1;
183 }
184
185 public override int GetMonth(DateTime time)
186 {
187 return time.Month;
188 }
189
190 public override int GetMonthsInYear(int year, int era)
191 {
192 if (era != 0 && era != 1)
193 {
195 }
196 if (year < 1 || year > 9999)
197 {
199 }
200 return 12;
201 }
202
203 public override int GetYear(DateTime time)
204 {
205 return time.Year;
206 }
207
208 internal override bool IsValidYear(int year, int era)
209 {
210 if (year >= 1)
211 {
212 return year <= 9999;
213 }
214 return false;
215 }
216
217 internal override bool IsValidDay(int year, int month, int day, int era)
218 {
219 if ((era != 0 && era != 1) || year < 1 || year > 9999 || month < 1 || month > 12 || day < 1)
220 {
221 return false;
222 }
223 int[] array = ((year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? DaysToMonth366 : DaysToMonth365);
224 return day <= array[month] - array[month - 1];
225 }
226
227 public override bool IsLeapDay(int year, int month, int day, int era)
228 {
229 if (month < 1 || month > 12)
230 {
231 throw new ArgumentOutOfRangeException("month", month, SR.Format(SR.ArgumentOutOfRange_Range, 1, 12));
232 }
233 if (era != 0 && era != 1)
234 {
236 }
237 if (year < 1 || year > 9999)
238 {
240 }
241 if (day < 1 || day > GetDaysInMonth(year, month))
242 {
244 }
245 if (IsLeapYear(year) && month == 2)
246 {
247 return day == 29;
248 }
249 return false;
250 }
251
252 public override int GetLeapMonth(int year, int era)
253 {
254 if (era != 0 && era != 1)
255 {
257 }
258 if (year < 1 || year > 9999)
259 {
261 }
262 return 0;
263 }
264
265 public override bool IsLeapMonth(int year, int month, int era)
266 {
267 if (era != 0 && era != 1)
268 {
270 }
271 if (year < 1 || year > 9999)
272 {
274 }
275 if (month < 1 || month > 12)
276 {
277 throw new ArgumentOutOfRangeException("month", month, SR.Format(SR.ArgumentOutOfRange_Range, 1, 12));
278 }
279 return false;
280 }
281
282 public override bool IsLeapYear(int year, int era)
283 {
284 if (era != 0 && era != 1)
285 {
287 }
288 return DateTime.IsLeapYear(year);
289 }
290
291 public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
292 {
293 if (era != 0 && era != 1)
294 {
296 }
297 return new DateTime(year, month, day, hour, minute, second, millisecond);
298 }
299
300 internal override bool TryToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era, out DateTime result)
301 {
302 if (era != 0 && era != 1)
303 {
304 result = DateTime.MinValue;
305 return false;
306 }
307 return DateTime.TryCreate(year, month, day, hour, minute, second, millisecond, out result);
308 }
309
310 public override int ToFourDigitYear(int year)
311 {
312 if (year < 0)
313 {
315 }
316 if (year > 9999)
317 {
319 }
320 return base.ToFourDigitYear(year);
321 }
322}
static void CheckAddResult(long ticks, DateTime minValue, DateTime maxValue)
Definition Calendar.cs:89
static int GetSystemTwoDigitYearSetting(CalendarId CalID, int defaultYearValue)
Definition Calendar.cs:378
static volatile Calendar s_defaultInstance
override CalendarAlgorithmType AlgorithmType
override bool TryToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era, out DateTime result)
override bool IsLeapDay(int year, int month, int day, int era)
override int GetMonthsInYear(int year, int era)
static long GetAbsoluteDate(int year, int month, int day)
override bool IsValidYear(int year, int era)
override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
override bool IsValidDay(int year, int month, int day, int era)
GregorianCalendar(GregorianCalendarTypes type)
override int GetDayOfMonth(DateTime time)
override int GetDaysInYear(int year, int era)
virtual long DateToTicks(int year, int month, int day)
virtual GregorianCalendarTypes CalendarType
override int GetLeapMonth(int year, int era)
override DateTime AddYears(DateTime time, int years)
override bool IsLeapMonth(int year, int month, int era)
override DateTime AddMonths(DateTime time, int months)
override DayOfWeek GetDayOfWeek(DateTime time)
override int GetDayOfYear(DateTime time)
override int GetDaysInMonth(int year, int month, int era)
override bool IsLeapYear(int year, int era)
static string ArgumentOutOfRange_Range
Definition SR.cs:1096
static string ArgumentOutOfRange_BadYearMonthDay
Definition SR.cs:974
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string ArgumentOutOfRange_NeedNonNegNum
Definition SR.cs:32
static string ArgumentOutOfRange_InvalidEraValue
Definition SR.cs:1040
Definition SR.cs:7
DayOfWeek
Definition DayOfWeek.cs:4
static readonly DateTime MaxValue
Definition DateTime.cs:37
static readonly DateTime MinValue
Definition DateTime.cs:35
DayOfWeek DayOfWeek
Definition DateTime.cs:76
static bool TryCreate(int year, int month, int day, int hour, int minute, int second, int millisecond, out DateTime result)
Definition DateTime.cs:1365
static int DaysInMonth(int year, int month)
Definition DateTime.cs:624
static bool IsLeapYear(int year)
Definition DateTime.cs:898
void GetDate(out int year, out int month, out int day)
Definition DateTime.cs:820