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

◆ GetDatePart()

virtual int System.Globalization.HebrewCalendar.GetDatePart ( long ticks,
int part )
inlinepackagevirtual

Definition at line 293 of file HebrewCalendar.cs.

294 {
295 CheckTicksRange(ticks);
296 new DateTime(ticks).GetDate(out var year, out var month, out var day);
297 DateBuffer dateBuffer = new DateBuffer();
298 dateBuffer.year = year + 3760;
299 int num = GetLunarMonthDay(year, dateBuffer);
300 DateBuffer dateBuffer2 = new DateBuffer();
301 dateBuffer2.year = dateBuffer.year;
302 dateBuffer2.month = dateBuffer.month;
303 dateBuffer2.day = dateBuffer.day;
304 long absoluteDate = GregorianCalendar.GetAbsoluteDate(year, month, day);
305 if (month == 1 && day == 1)
306 {
307 return GetResult(dateBuffer2, part);
308 }
309 long num2 = absoluteDate - GregorianCalendar.GetAbsoluteDate(year, 1, 1);
310 if (num2 + dateBuffer.day <= LunarMonthLen[num * 14 + dateBuffer.month])
311 {
312 dateBuffer2.day += (int)num2;
313 return GetResult(dateBuffer2, part);
314 }
315 dateBuffer2.month++;
316 dateBuffer2.day = 1;
317 num2 -= LunarMonthLen[num * 14 + dateBuffer.month] - dateBuffer.day;
318 if (num2 > 1)
319 {
320 while (num2 > LunarMonthLen[num * 14 + dateBuffer2.month])
321 {
322 num2 -= LunarMonthLen[num * 14 + dateBuffer2.month++];
323 if (dateBuffer2.month > 13 || LunarMonthLen[num * 14 + dateBuffer2.month] == 0)
324 {
325 dateBuffer2.year++;
326 num = HebrewTable[(year + 1 - 1583) * 2 + 1];
327 dateBuffer2.month = 1;
328 }
329 }
330 dateBuffer2.day += (int)(num2 - 1);
331 }
332 return GetResult(dateBuffer2, part);
333 }
static ReadOnlySpan< byte > HebrewTable
static void CheckTicksRange(long ticks)
static int GetLunarMonthDay(int gregorianYear, DateBuffer lunarDate)
static ReadOnlySpan< byte > LunarMonthLen
static int GetResult(DateBuffer result, int part)

References System.Globalization.HebrewCalendar.CheckTicksRange(), System.DateTime, System.Globalization.HebrewCalendar.DateBuffer.day, System.Globalization.GregorianCalendar.GetAbsoluteDate(), System.Globalization.HebrewCalendar.GetLunarMonthDay(), System.Globalization.HebrewCalendar.GetResult(), System.Globalization.HebrewCalendar.HebrewTable, System.Globalization.HebrewCalendar.LunarMonthLen, System.Globalization.HebrewCalendar.DateBuffer.month, System.Globalization.HebrewCalendar.DateBuffer.year, and System.year.

Referenced by System.Globalization.HebrewCalendar.AddMonths(), System.Globalization.HebrewCalendar.AddYears(), System.Globalization.HebrewCalendar.GetDayOfMonth(), System.Globalization.HebrewCalendar.GetMonth(), and System.Globalization.HebrewCalendar.GetYear().