Beispiel #1
0
        internal int GetDatePart(long ticks, int part)
        {
            PersianCalendar.CheckTicksRange(ticks);
            long numberOfDays = ticks / 864000000000L + 1L;
            int  year         = (int)Math.Floor((double)(CalendricalCalculationsHelper.PersianNewYearOnOrBefore(numberOfDays) - PersianCalendar.PersianEpoch) / 365.242189 + 0.5) + 1;

            if (part == 0)
            {
                return(year);
            }
            int ordinalDay = (int)(numberOfDays - CalendricalCalculationsHelper.GetNumberOfDays(this.ToDateTime(year, 1, 1, 0, 0, 0, 0, 1)));

            if (part == 1)
            {
                return(ordinalDay);
            }
            int month = PersianCalendar.MonthFromOrdinalDay(ordinalDay);

            if (part == 2)
            {
                return(month);
            }
            int num = ordinalDay - PersianCalendar.DaysInPreviousMonths(month);

            if (part == 3)
            {
                return(num);
            }
            throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_DateTimeParsing"));
        }
Beispiel #2
0
        private long GetAbsoluteDatePersian(int year, int month, int day)
        {
            if (year < 1 || year > 9378 || (month < 1 || month > 12))
            {
                throw new ArgumentOutOfRangeException((string)null, Environment.GetResourceString("ArgumentOutOfRange_BadYearMonthDay"));
            }
            int num1 = PersianCalendar.DaysInPreviousMonths(month) + day - 1;
            int num2 = (int)(365.242189 * (double)(year - 1));

            return(CalendricalCalculationsHelper.PersianNewYearOnOrBefore(PersianCalendar.PersianEpoch + (long)num2 + 180L) + (long)num1);
        }