97 votes

Comment analyser un mois nom (string) pour un entier à des fins de comparaison en C#?

J'ai besoin d'être en mesure de comparer des noms de mois, j'ai dans un tableau.

Ce serait bien s'il y avait un moyen direct comme:

Month.toInt("January") > Month.toInt("May")

Ma recherche sur Google semble le suggérer le seul moyen est d'écrire votre propre méthode, mais cela semble être un problème assez commun que je pense qu'il aurait été déjà mis en œuvre .Net, quiconque fait cela avant?

185voto

James Curran Points 55356

DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture ).Month

Même si, à vos fins, vous serez probablement mieux simplement la création d'un Dictionary<string, int> cartographie du mois du nom de sa valeur.

20voto

Aaron Palmer Points 4256

Vous pourriez faire quelque chose comme ceci:

Convert.ToDate(month + " 01, 1900").Month

19voto

Rasmus Faber Points 24195

Si vous utilisez l' DateTime.ParseExact()-méthode que plusieurs personnes ont suggéré, vous devriez examiner attentivement ce que vous voulez arriver lorsque l'application s'exécute dans un environnement non anglais!

Au Danemark, ce qui de la ParseExact("Januar", ...) et ParseExact("January", ...) doit travailler et qui doit échouer?

Qui peut faire la différence entre CultureInfo.CurrentCulture et CultureInfo.InvariantCulture.

9voto

Rune Grimstad Points 17775

Vous pouvez utiliser DateTime.Méthode d'analyse pour obtenir un objet DateTime, puis de vérifier sa propriété Mois. Faire quelque chose comme ceci:

int month = DateTime.Parse("1." + monthName + " 2008").Month;

L'astuce consiste à créer une date valide pour créer un objet DateTime.

9voto

Treb Points 11153

Vous pouvez utiliser un enum mois:

public enum Month
{
    January,
    February,
    // (...)
    December,
}    

public Month ToInt(Month Input)
{
    return (int)Enum.Parse(typeof(Month), Input, true));
}

Je ne suis pas certain à 100% sur la syntaxe pour l'enum.Parse ().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X