System.Globalization.HebrewCalendar.HebrewToGregorian C# (CSharp) Method

HebrewToGregorian() private method

private HebrewToGregorian ( int hebrewYear, int hebrewMonth, int hebrewDay, int hour, int minute, int second, int millisecond ) : System.DateTime
hebrewYear int
hebrewMonth int
hebrewDay int
hour int
minute int
second int
millisecond int
return System.DateTime
        DateTime HebrewToGregorian(int hebrewYear, int hebrewMonth, int hebrewDay, int hour, int minute, int second, int millisecond) {
            // Get the rough Gregorian year for the specified hebrewYear.
            //
            int gregorianYear = hebrewYear - HebrewYearOf1AD;

            __DateBuffer hebrewDateOfJan1 = new __DateBuffer(); // year value is unused.
            int lunarYearType = GetLunarMonthDay(gregorianYear, hebrewDateOfJan1);

            if ((hebrewMonth == hebrewDateOfJan1.month) && (hebrewDay == hebrewDateOfJan1.day)) {
                return (new DateTime(gregorianYear, 1, 1, hour, minute, second, millisecond));
            }

            int days = GetDayDifference(lunarYearType, hebrewMonth, hebrewDay, hebrewDateOfJan1.month, hebrewDateOfJan1.day);

            DateTime gregorianNewYear = new DateTime(gregorianYear, 1, 1);
            return (new DateTime(gregorianNewYear.Ticks + days * TicksPerDay
                + TimeToTicks(hour, minute, second, millisecond)));
        }

Usage Example

Esempio n. 1
0
        /// <summary>返回一个 <see cref="T:System.DateTime" />,它设置为指定纪元中的指定日期和时间。</summary>
        /// <returns>设置为当前纪元中的指定日期和时间的 <see cref="T:System.DateTime" />。</returns>
        /// <param name="year">表示年份的整数。</param>
        /// <param name="month">1 到 13 之间的一个整数,它表示月份。</param>
        /// <param name="day">1 到 30 之间的一个整数,它表示天。</param>
        /// <param name="hour">0 与 23 之间的一个整数,它表示小时。</param>
        /// <param name="minute">0 与 59 之间的一个整数,它表示分钟。</param>
        /// <param name="second">0 与 59 之间的一个整数,它表示秒。</param>
        /// <param name="millisecond">0 与 999 之间的一个整数,它表示毫秒。</param>
        /// <param name="era">表示纪元的整数。指定 <see cref="F:System.Globalization.HebrewCalendar.HebrewEra" /> 或 HebrewCalendar.Eras[Calendar.CurrentEra]。</param>
        /// <exception cref="T:System.ArgumentOutOfRangeException">
        /// <paramref name="year" />、<paramref name="month" />、<paramref name="day" /> 或 <paramref name="era" /> 超出了当前 <see cref="T:System.Globalization.HebrewCalendar" /> 对象支持的范围。- 或 -<paramref name="hour" /> 小于 0 或大于 23。- 或 -<paramref name="minute" /> 小于 0 或大于 59。- 或 -<paramref name="second" /> 小于 0 或大于 59。- 或 -<paramref name="millisecond" /> 小于 0 或大于 999。</exception>
        public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
        {
            HebrewCalendar.CheckHebrewYearValue(year, era, "year");
            this.CheckHebrewMonthValue(year, month, era);
            this.CheckHebrewDayValue(year, month, day, era);
            DateTime gregorian = HebrewCalendar.HebrewToGregorian(year, month, day, hour, minute, second, millisecond);

            HebrewCalendar.CheckTicksRange(gregorian.Ticks);
            return(gregorian);
        }