public static void Main()
    {
        // Creates and initializes a HebrewCalendar.
        HebrewCalendar myCal = new HebrewCalendar();

        // Displays the header.
        Console.Write("YEAR\t");
        for (int y = 5761; y <= 5765; y++)
        {
            Console.Write("\t{0}", y);
        }
        Console.WriteLine();

        // Displays the value of the CurrentEra property.
        Console.Write("CurrentEra:");
        for (int y = 5761; y <= 5765; y++)
        {
            Console.Write("\t{0}", myCal.GetDaysInYear(y, HebrewCalendar.CurrentEra));
        }
        Console.WriteLine();

        // Displays the values in the Eras property.
        for (int i = 0; i < myCal.Eras.Length; i++)
        {
            Console.Write("Era {0}:\t", myCal.Eras[i]);
            for (int y = 5761; y <= 5765; y++)
            {
                Console.Write("\t{0}", myCal.GetDaysInYear(y, myCal.Eras[i]));
            }
            Console.WriteLine();
        }
    }
        /// <summary>
        /// מחשב האם התאריך בטווח התאריכים בהתחשב בנתוני לוח עברי : שנה מעוברת ,שנים מלאות ,חסרות וכסדרן
        /// </summary>
        /// <param name="value">date to check(today)</param>
        /// <param name="date">date of event</param>
        /// <param name="length">how meny days is event</param>
        /// <returns></returns>
        public static bool IsInRange(this DateTime value, DateTime date, int length)
        {
            length--;
            HebrewCalendar hd = new HebrewCalendar();

            //case 1: The same type of year
            if (hd.GetDaysInYear(hd.GetYear(value)) == hd.GetDaysInYear(hd.GetYear(date)))
            {
                //לא נכון למקרה הזה יכול להיות שימושי במקרים אחרים
                //if (hd.GetDayOfYear(date) + length > hd.GetDaysInYear(hd.GetYear(date)))
                //    length += hd.GetDaysInYear(hd.GetYear(date));
                if (hd.GetDayOfYear(value) >= hd.GetDayOfYear(date) && (hd.GetDayOfYear(value) <= (hd.GetDayOfYear(date) + length)))
                {
                    return(true);
                }
                return(false);
            }

            int month = hd.GetMonth(value);

            // all false options: different months(not Adar in leep year) or an erlier day in the month - same length of month
            if (month < hd.GetMonth(date) && hd.IsLeapYear(hd.GetYear(date)) == false)
            {
                return(false);
            }
            //both are ether leap or not, The differencse is by the months
            if (Math.Abs(hd.GetDaysInYear(hd.GetYear(value)) - hd.GetDaysInYear(hd.GetYear(date))) <= 2)
            {
                return(CheckRange(hd.GetYear(date), month, hd.GetDayOfMonth(value), value, date, length));
            }

            else if (hd.IsLeapYear(hd.GetYear(value)) == true)
            {
                if (month > 6)
                {
                    month -= 1;
                }
                if (hd.GetMonth(value) != 6)
                {
                    return(CheckRange(hd.GetYear(date), month, hd.GetDayOfMonth(value), value, date, length));
                }
                else
                {
                    return(false);
                }
            }
            //date is a leap year
            else
            {
                if (month >= 6)
                {
                    month += 1;
                }
                if (hd.GetMonth(date) == 6 || (hd.GetMonth(date) < 6 && (hd.GetMonth(hd.AddDays(date, length)) >= 6)))
                {
                    return(false);
                }
                return(CheckRange(hd.GetYear(date), month, hd.GetDayOfMonth(value), value, date, length));
            }
        }
Exemple #3
0
        ///<summary>Finds the type of a year.</summary>
        ///<param name="hebrewYear">The year to check.</param>
        ///<returns>The type of the year.</returns>
        public static HebrewYearType GetYearType(int hebrewYear)
        {
            var length = calendar.GetDaysInYear(hebrewYear);

            if (length > 380)
            {
                length -= 30;
            }
            return((HebrewYearType)length);
        }
Exemple #4
0
    public static void Main()
    {
        StreamWriter output = new StreamWriter("HebrewCalendarInfo.txt");

        // Make the Hebrew Calendar the current calendar and
        // Hebrew (Israel) the current thread culture.
        HebrewCalendar hc      = new HebrewCalendar();
        CultureInfo    culture = CultureInfo.CreateSpecificCulture("he-IL");

        culture.DateTimeFormat.Calendar     = hc;
        Thread.CurrentThread.CurrentCulture = culture;

        output.WriteLine("{0} Information:\n",
                         GetCalendarName(culture.DateTimeFormat.Calendar));

        // Get the calendar range expressed in both Hebrew calendar and
        // Gregorian calendar dates.
        output.WriteLine("Start Date: {0} ", hc.MinSupportedDateTime);
        culture.DateTimeFormat.Calendar = culture.Calendar;
        output.WriteLine("            ({0} Gregorian)\n",
                         hc.MinSupportedDateTime);

        culture.DateTimeFormat.Calendar = hc;
        output.WriteLine("End Date: {0} ", hc.MaxSupportedDateTime);
        culture.DateTimeFormat.Calendar = culture.Calendar;
        output.WriteLine("          ({0} Gregorian)\n",
                         hc.MaxSupportedDateTime);

        culture.DateTimeFormat.Calendar = hc;

        // Get the year in the Hebrew calendar that corresponds to 1/1/2012
        // and display information about it.
        DateTime startOfYear = new DateTime(2012, 1, 1);

        output.WriteLine("Days in the Year {0}: {1}\n",
                         hc.GetYear(startOfYear),
                         hc.GetDaysInYear(hc.GetYear(startOfYear)));

        output.WriteLine("Days in Each Month of {0}:\n", hc.GetYear(startOfYear));
        output.WriteLine("Month       Days       Month Name");
        // Change start of year to first day of first month
        startOfYear = hc.ToDateTime(hc.GetYear(startOfYear), 1, 1, 0, 0, 0, 0);
        DateTime startOfMonth = startOfYear;

        for (int ctr = 1; ctr <= hc.GetMonthsInYear(hc.GetYear(startOfYear)); ctr++)
        {
            output.Write(" {0,2}", ctr);
            output.WriteLine("{0,12}{1,15:MMM}",
                             hc.GetDaysInMonth(hc.GetYear(startOfMonth), hc.GetMonth(startOfMonth)),
                             startOfMonth);
            startOfMonth = hc.AddMonths(startOfMonth, 1);
        }

        output.Close();
    }
        public void DaysInYear()
        {
            var bcl     = new HebrewCalendar();
            var minYear = bcl.GetYear(bcl.MinSupportedDateTime);
            var maxYear = bcl.GetYear(bcl.MaxSupportedDateTime);

            for (int year = minYear; year <= maxYear; year++)
            {
                Assert.AreEqual(bcl.GetDaysInYear(year), HebrewScripturalCalculator.DaysInYear(year));
            }
        }