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

◆ AddMonths()

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

Definition at line 132 of file JulianCalendar.cs.

133 {
134 if (months < -120000 || months > 120000)
135 {
136 throw new ArgumentOutOfRangeException("months", months, SR.Format(SR.ArgumentOutOfRange_Range, -120000, 120000));
137 }
138 int datePart = GetDatePart(time.Ticks, 0);
139 int datePart2 = GetDatePart(time.Ticks, 2);
140 int num = GetDatePart(time.Ticks, 3);
141 int num2 = datePart2 - 1 + months;
142 if (num2 >= 0)
143 {
144 datePart2 = num2 % 12 + 1;
145 datePart += num2 / 12;
146 }
147 else
148 {
149 datePart2 = 12 + (num2 + 1) % 12;
150 datePart += (num2 - 11) / 12;
151 }
152 int[] array = ((datePart % 4 == 0 && (datePart % 100 != 0 || datePart % 400 == 0)) ? s_daysToMonth366 : s_daysToMonth365);
153 int num3 = array[datePart2] - array[datePart2 - 1];
154 if (num > num3)
155 {
156 num = num3;
157 }
158 long ticks = DateToTicks(datePart, datePart2, num) + time.Ticks % 864000000000L;
159 Calendar.CheckAddResult(ticks, MinSupportedDateTime, MaxSupportedDateTime);
160 return new DateTime(ticks);
161 }
static readonly int[] s_daysToMonth365
static readonly int[] s_daysToMonth366
static int GetDatePart(long ticks, int part)
static long DateToTicks(int year, int month, int day)

References System.SR.ArgumentOutOfRange_Range, System.array, System.Globalization.Calendar.CheckAddResult(), System.DateTime, System.Globalization.JulianCalendar.DateToTicks(), System.SR.Format(), System.Globalization.JulianCalendar.GetDatePart(), System.L, System.Globalization.JulianCalendar.MaxSupportedDateTime, System.Globalization.JulianCalendar.MinSupportedDateTime, System.Globalization.JulianCalendar.s_daysToMonth365, System.Globalization.JulianCalendar.s_daysToMonth366, and System.DateTime.Ticks.

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