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)); } }
///<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); }
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)); } }