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

◆ AddMonths()

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

Definition at line 145 of file PersianCalendar.cs.

146 {
147 if (months < -120000 || months > 120000)
148 {
149 throw new ArgumentOutOfRangeException("months", months, SR.Format(SR.ArgumentOutOfRange_Range, -120000, 120000));
150 }
151 int datePart = GetDatePart(time.Ticks, 0);
152 int datePart2 = GetDatePart(time.Ticks, 2);
153 int num = GetDatePart(time.Ticks, 3);
154 int num2 = datePart2 - 1 + months;
155 if (num2 >= 0)
156 {
157 datePart2 = num2 % 12 + 1;
158 datePart += num2 / 12;
159 }
160 else
161 {
162 datePart2 = 12 + (num2 + 1) % 12;
163 datePart += (num2 - 11) / 12;
164 }
165 int daysInMonth = GetDaysInMonth(datePart, datePart2);
166 if (num > daysInMonth)
167 {
168 num = daysInMonth;
169 }
170 long ticks = GetAbsoluteDatePersian(datePart, datePart2, num) * 864000000000L + time.Ticks % 864000000000L;
171 Calendar.CheckAddResult(ticks, MinSupportedDateTime, MaxSupportedDateTime);
172 return new DateTime(ticks);
173 }
override int GetDaysInMonth(int year, int month, int era)
int GetDatePart(long ticks, int part)
static long GetAbsoluteDatePersian(int year, int month, int day)

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

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