14

I have this code:

DateTime dtAnyDateHebrew = new DateTime(5767, 1, 1, new System.Globalization.HebrewCalendar());

how can I get the numeric Hebrew date of today?

Meaning:

For example I want to find out if a specific Hebrew month falls in this month, so I have to send the hebrew month to the function - with today's day of month and year, so that I'll be able to check if dtAnyDateHebrew is equal to Today, bigger than. etc.

finally I need to get - Today's hebrew day of month, Today's hebrew month, Today's hebrew year, as int (of course).

Can someone help me?

Midhun MP
  • 90,682
  • 30
  • 147
  • 191
Tal
  • 281
  • 2
  • 5
  • I hope you get a great answer here. If you don't, you can also try the new-ish [Judaism StackExchange](http://judaism.stackexchange.com/). – Isaac Moses Jun 06 '11 at 18:46

3 Answers3

9

Well, I found what I need:

DateTime Today = DateTime.Today;

Calendar HebCal = new HebrewCalendar();
int curYear = HebCal.GetYear(Today);    //current numeric hebrew year
int curMonth = HebCal.GetMonth(Today);  //current numeric hebrew month

etc..

It's that simple.

Thanks to all of you.

DarthJDG
  • 16,140
  • 11
  • 47
  • 55
Tal
  • 281
  • 2
  • 5
8

Use DateTime.Today and converted it using one of the following ex. methods:

/// <summary>
/// Converts a gregorian date to its hebrew date string representation,
/// using custom DateTime format string.
/// </summary>
/// <param name="value">The <see cref="DateTime"/> value to convert.</param>
/// <param name="format">A standard or custom date-time format string.</param>
public static string ToJewishDateString(this DateTime value, string format)
{
  var ci = CultureInfo.CreateSpecificCulture("he-IL");
  ci.DateTimeFormat.Calendar = new HebrewCalendar();      
  return value.ToString(format, ci);
}

/// <summary>
/// Converts a gregorian date to its hebrew date string representation,
/// using DateTime format options.
/// </summary>
/// <param name="value">The <see cref="DateTime"/> value to convert.</param>
/// <param name="dayOfWeek">Specifies whether the return string should
/// include the day of week.</param>
public static string ToJewishDateString(this DateTime value, bool dayOfWeek)
{
  var format = dayOfWeek ? "D" : "d";
  return value.ToJewishDateString(format);
}
Shimmy Weitzhandler
  • 92,920
  • 119
  • 388
  • 596
3

This blog entry shows how.

public static string GetHebrewJewishDateString(DateTime anyDate, bool addDayOfWeek)  { 
    System.Text.StringBuilder hebrewFormatedString = new System.Text.StringBuilder(); 

    // Create the hebrew culture to use hebrew (Jewish) calendar 
    CultureInfo jewishCulture = CultureInfo.CreateSpecificCulture("he-IL"); 
    jewishCulture.DateTimeFormat.Calendar = new HebrewCalendar(); 

    #region Format the date into a Jewish format 

   if (addDayOfWeek) 
   { 
      // Day of the week in the format " " 
      hebrewFormatedString.Append(anyDate.ToString("dddd", jewishCulture) + " "); 
   } 

   // Day of the month in the format "'" 
   hebrewFormatedString.Append(anyDate.ToString("dd", jewishCulture) + " "); 

   // Month and year in the format " " 
   hebrewFormatedString.Append("" + anyDate.ToString("y", jewishCulture)); 
   #endregion 

   return hebrewFormatedString.ToString(); 
}
DarthJDG
  • 16,140
  • 11
  • 47
  • 55
Ernest Friedman-Hill
  • 77,245
  • 10
  • 138
  • 182
  • Ok, but you only get a hebrew string, while the function needs int. In addition you get the month + year as one string, and not saparated. Switch case is a little complicated - I need to split out the whole string from any char and then to check the array length (sometimes Hebrew month name has 2 letters). Tthen I can use switch case but 2 kinds of: for Leap year and normal one. So I ask - is there any more simple way? – Tal Jun 06 '11 at 05:40