internal HebrewYearMonthDayCalculator(HebrewMonthNumbering monthNumbering)
     : base(HebrewScripturalCalculator.MinYear,
            HebrewScripturalCalculator.MaxYear,
            3654, // Average length of 10 years
            UnixEpochDayAtStartOfYear1)
 {
     this.monthNumbering = monthNumbering;
 }
 internal HebrewYearMonthDayCalculator(HebrewMonthNumbering monthNumbering)
     : base(HebrewScripturalCalculator.MinYear,
           HebrewScripturalCalculator.MaxYear,
           3654, // Average length of 10 years
           UnixEpochDayAtStartOfYear1)
 {
     this.monthNumbering = monthNumbering;
 }
        public void PlusMonths_Overflow(HebrewMonthNumbering monthNumbering)
        {
            var calendar = CalendarSystem.GetHebrewCalendar(monthNumbering);
            // TODO: It would be nice to have an easy way of getting the smallest/largest LocalDate for
            // a calendar. Or possibly FromDayOfYear as well... instead, we'll just add/subtract 8 months instead
            var earlyDate = new LocalDate(calendar.MinYear, 1, 1, calendar);
            var lateDate  = new LocalDate(calendar.MaxYear, 12, 1, calendar);

            Assert.Throws <OverflowException>(() => earlyDate.PlusMonths(-7));
            Assert.Throws <OverflowException>(() => lateDate.PlusMonths(7));
        }
Beispiel #4
0
        public void DayOfYearAndReverse(HebrewMonthNumbering numbering)
        {
            var calculator = new HebrewYearMonthDayCalculator(numbering);

            for (int year = 5400; year < 5419; year++)
            {
                int daysInYear = calculator.GetDaysInYear(year);
                for (int dayOfYear = 1; dayOfYear <= daysInYear; dayOfYear++)
                {
                    YearMonthDay ymd = calculator.GetYearMonthDay(year, dayOfYear);
                    Assert.AreEqual(dayOfYear, calculator.GetDayOfYear(ymd));
                }
            }
        }
Beispiel #5
0
        internal HebrewYearMonthDayCalculator(HebrewMonthNumbering monthNumbering)
            : base(HebrewScripturalCalculator.MinYear,
                   HebrewScripturalCalculator.MaxYear,
                   (long)(365.4 * NodaConstants.TicksPerStandardDay),                                       // Average year length
                   (AbsoluteDayOfHebrewEpoch - AbsoluteDayOfUnixEpoch) * NodaConstants.TicksPerStandardDay, // Tick at year 1
                   new[] { Era.AnnoMundi })
        {
            switch (monthNumbering)
            {
            case HebrewMonthNumbering.Civil:
                calendarToScriptural = HebrewMonthConverter.CivilToScriptural;
                scripturalToCalendar = HebrewMonthConverter.ScripturalToCivil;
                break;

            case HebrewMonthNumbering.Scriptural:
                calendarToScriptural = NoOp;
                scripturalToCalendar = NoOp;
                break;
            }
        }
Beispiel #6
0
 /// <summary>
 /// Returns a Hebrew calendar, as described at http://en.wikipedia.org/wiki/Hebrew_calendar. This is a
 /// purely mathematical calculator, applied proleptically to the period where the real calendar was observational.
 /// </summary>
 /// <remarks>
 /// <para>Please note that in version 1.3.0 of Noda Time, support for the Hebrew calendar is somewhat experimental,
 /// particularly in terms of calculations involving adding or subtracting years. Additionally, text formatting
 /// and parsing using month names is not currently supported, due to the challenges of handling leap months.
 /// It is hoped that this will be improved in future versions.</para>
 /// <para>The implementation for this was taken from http://www.cs.tau.ac.il/~nachum/calendar-book/papers/calendar.ps,
 /// which is a public domain algorithm presumably equivalent to that given in the Calendrical Calculations book
 /// by the same authors (Nachum Dershowitz and Edward Reingold).
 /// </para>
 /// </remarks>
 /// <param name="monthNumbering">The month numbering system to use</param>
 /// <returns>A Hebrew calendar system for the given month numbering.</returns>
 public static CalendarSystem GetHebrewCalendar(HebrewMonthNumbering monthNumbering)
 {
     Preconditions.CheckArgumentRange(nameof(monthNumbering), (int)monthNumbering, 1, 2);
     return(HebrewCalendars.ByMonthNumbering[((int)monthNumbering) - 1]);
 }
 public void DayOfYearAndReverse(HebrewMonthNumbering numbering)
 {
     var calculator = new HebrewYearMonthDayCalculator(numbering);
     for (int year = 5400; year < 5419; year++)
     {
         int daysInYear = calculator.GetDaysInYear(year);
         for (int dayOfYear = 1; dayOfYear <= daysInYear; dayOfYear++)
         {
             YearMonthDay ymd = calculator.GetYearMonthDay(year, dayOfYear);
             Assert.AreEqual(dayOfYear, calculator.GetDayOfYear(ymd));
         }
     }
 }
 /// <summary>
 /// Returns a Hebrew calendar, as described at http://en.wikipedia.org/wiki/Hebrew_calendar. This is a
 /// purely mathematical calculator, applied proleptically to the period where the real calendar was observational. 
 /// </summary>
 /// <remarks>
 /// <para>Please note that in version 1.3.0 of Noda Time, support for the Hebrew calendar is somewhat experimental,
 /// particularly in terms of calculations involving adding or subtracting years. Additionally, text formatting
 /// and parsing using month names is not currently supported, due to the challenges of handling leap months.
 /// It is hoped that this will be improved in future versions.</para>
 /// <para>The implementation for this was taken from http://www.cs.tau.ac.il/~nachum/calendar-book/papers/calendar.ps,
 /// which is a public domain algorithm presumably equivalent to that given in the Calendrical Calculations book
 /// by the same authors (Nachum Dershowitz and Edward Reingold).
 /// </para>
 /// </remarks>
 /// <param name="monthNumbering">The month numbering system to use</param>
 /// <returns>A Hebrew calendar system for the given month numbering.</returns>
 public static CalendarSystem GetHebrewCalendar(HebrewMonthNumbering monthNumbering)
 {
     Preconditions.CheckArgumentRange(nameof(monthNumbering), (int) monthNumbering, 1, 2);
     return HebrewCalendars.ByMonthNumbering[((int) monthNumbering) - 1];
 }