Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AddMonths()

override DateTime System.Globalization.UmAlQuraCalendar.AddMonths ( DateTime time,
int months )
inline

Definition at line 247 of file UmAlQuraCalendar.cs.

248 {
249 if (months < -120000 || months > 120000)
250 {
251 throw new ArgumentOutOfRangeException("months", months, SR.Format(SR.ArgumentOutOfRange_Range, -120000, 120000));
252 }
253 int datePart = GetDatePart(time, 0);
254 int datePart2 = GetDatePart(time, 2);
255 int num = GetDatePart(time, 3);
256 int num2 = datePart2 - 1 + months;
257 if (num2 >= 0)
258 {
259 datePart2 = num2 % 12 + 1;
260 datePart += num2 / 12;
261 }
262 else
263 {
264 datePart2 = 12 + (num2 + 1) % 12;
265 datePart += (num2 - 11) / 12;
266 }
267 if (num > 29)
268 {
269 int daysInMonth = GetDaysInMonth(datePart, datePart2);
270 if (num > daysInMonth)
271 {
272 num = daysInMonth;
273 }
274 }
275 CheckYearRange(datePart, 1);
276 DateTime result = new DateTime(GetAbsoluteDateUmAlQura(datePart, datePart2, num) * 864000000000L + time.Ticks % 864000000000L);
277 Calendar.CheckAddResult(result.Ticks, MinSupportedDateTime, MaxSupportedDateTime);
278 return result;
279 }
static void CheckYearRange(int year, int era)
static int GetDatePart(DateTime time, int part)
static long GetAbsoluteDateUmAlQura(int year, int month, int day)
override int GetDaysInMonth(int year, int month, int era)

References System.SR.ArgumentOutOfRange_Range, System.Globalization.Calendar.CheckAddResult(), System.Globalization.UmAlQuraCalendar.CheckYearRange(), System.DateTime, System.SR.Format(), System.Globalization.UmAlQuraCalendar.GetAbsoluteDateUmAlQura(), System.Globalization.UmAlQuraCalendar.GetDatePart(), System.Globalization.UmAlQuraCalendar.GetDaysInMonth(), System.L, System.Globalization.UmAlQuraCalendar.MaxSupportedDateTime, System.Globalization.UmAlQuraCalendar.MinSupportedDateTime, and System.DateTime.Ticks.

Referenced by System.Globalization.UmAlQuraCalendar.AddYears().