2010-05-09 5 views
2

J'ai une valeur de chaîne qui contient ou une date hébreu, ou une date grégorienne. Comment puis-je déterminer si c'est grégorien ou hébreu en C#?Comment puis-je déterminer si une chaîne est une date hébraïque ou grégorienne?

+3

Pouvez-vous envoyer des échantillons pour les chaînes de date? – Oded

+0

Dans quels formats? Si ce n'est que des dates récentes, ne pouvez-vous pas simplement tester si l'année est plus grande que, disons, 3000? – svick

+0

@svick - Cela ne fonctionnerait pas, puisque l'année ressemblerait à תשס"ח et non sous la forme d'un nombre – Rubys

Répondre

6

Vous pouvez utiliser la méthode TryParse de l'objet DateTime - si elle a échoué avec la culture hébraïque, vous pouvez essayer avec le calendrier grégorien:

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

Avez-vous déjà essayé ceci? DateTime.Now n'est pas une méthode. le HébreuCalendar –

+0

@Hans Passant - Merci d'avoir signalé mon erreur avec 'DateTime.Now' Cela a été corrigé (et j'ai ajouté le' HebrewCalendar') .Le code tel qu'il est est maintenant fonctionne – Oded

+0

Cela fonctionne parfaitement, merci ! –

Questions connexes