2010-05-09 3 views
2

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

+3

Вы можете разместить образцы для строки с датой? – Oded

+0

В каких форматах? Если это только недавние даты, разве вы не можете просто проверить, год ли больше, чем, скажем, 3000? – svick

+0

@svick - Это не сработает, так как год будет выглядеть как תשס"ח, а не в виде числа – Rubys

ответ

6

Вы можете использовать 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 
} 
+0

Вы действительно пробовали это? DateTime.Now - это не метод. Также не используется культура he-IL HebrewCalendar. –

+0

@Hans Passant - Спасибо, что указали мою ошибку с 'DateTime.Now'. Это было исправлено (и я добавил« HebrewCalendar'). Код как есть, теперь работает. – Oded

+0

Он отлично работает, спасибо ! –