Как я могу определить, является ли строка еврейской или григорианской датой?

У меня есть строковое значение, которое содержит либо дату на иврите, либо дату по григорианскому календарю. Как я могу определить, является ли это григорианским или ивритом в С#?


person Alon Gubkin    schedule 09.05.2010    source источник
comment
Можете ли вы опубликовать образцы для строк даты?   -  person Oded    schedule 09.05.2010
comment
В каких форматах? Если это просто недавние даты, не могли бы вы просто проверить, больше ли год, скажем, 3000?   -  person svick    schedule 09.05.2010
comment
@svick - Это не сработает, так как год будет выглядеть как תשסח, а не в виде числа   -  person Rubys    schedule 10.05.2010


Ответы (1)


Вы можете использовать метод TryParse объекта DateTime — если он не удался с культурой иврита вы можете попробовать с григорианским календарем:

DateTime myDate = DateTime.Now;
CultureInfo culture = CultureInfo.CreateSpecificCulture("he-IL");
culture.DateTimeFormat.Calendar = new HebrewCalendar(); // To be sure
DateTimeStyles styles = DateTimeStyles.None;

if (DateTime.TryParse("כ\"ה/אייר/תש\"ע", culture, styles, out myDate))
{
   // Hebrew date
}

culture = CultureInfo.CreateSpecificCulture("en-US");

if (DateTime.TryParse("2/30/2010", culture, styles, out myDate))
{
   // US date
}
person Oded    schedule 09.05.2010
comment
Вы действительно пробовали это? DateTime.Now не является методом. Культура he-IL также не использует JewishCalendar. - person Hans Passant; 09.05.2010
comment
@Hans Passant - Спасибо, что указали на мою ошибку с DateTime.Now. Это было исправлено (и я добавил HebrewCalendar). Код в том виде, в каком он есть, теперь работает. - person Oded; 09.05.2010