У меня есть строковое значение, которое содержит или дату на иврите, или григорианскую дату. Как я могу определить, является ли это на григорианском или иврите в C#?Как определить, является ли строка датой на иврите или григорианской?
ответ
Вы можете использовать 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
}
Вы действительно пробовали это? DateTime.Now - это не метод. Также не используется культура he-IL HebrewCalendar. –
@Hans Passant - Спасибо, что указали мою ошибку с 'DateTime.Now'. Это было исправлено (и я добавил« HebrewCalendar'). Код как есть, теперь работает. – Oded
Он отлично работает, спасибо ! –
Вы можете разместить образцы для строки с датой? – Oded
В каких форматах? Если это только недавние даты, разве вы не можете просто проверить, год ли больше, чем, скажем, 3000? – svick
@svick - Это не сработает, так как год будет выглядеть как תשס"ח, а не в виде числа – Rubys