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
 /// <summary>返回指定 <see cref="T:System.DateTime" /> 对象中的纪元。</summary>
 /// <returns>始终返回 <see cref="F:System.Globalization.PersianCalendar.PersianEra" />。</returns>
 /// <param name="time">要读取的 <see cref="T:System.DateTime" />。</param>
 /// <exception cref="T:System.ArgumentOutOfRangeException">
 /// <paramref name="time" /> 参数表示的日期小于 <see cref="P:System.Globalization.PersianCalendar.MinSupportedDateTime" /> 或大于 <see cref="P:System.Globalization.PersianCalendar.MaxSupportedDateTime" />。</exception>
 public override int GetEra(DateTime time)
 {
     PersianCalendar.CheckTicksRange(time.Ticks);
     return(PersianCalendar.PersianEra);
 }