La meilleure façon de transformer un entier en nom de mois en c #?


123

Existe-t-il un meilleur moyen de transformer un entier en nom de mois en .net?

De toute évidence, je peux faire tourner une date / heure pour la chaîner et analyser le nom du mois à partir de là. Cela semble être une énorme perte de temps.

Réponses:



20

Pourquoi ne pas simplement utiliser somedatetime.ToString("MMMM")?


1
Donc, chaque fois que j'ai besoin de passer du 1er au janvier, j'ai besoin d'une nouvelle date avec une année et un jour arbitraires, afin d'obtenir simplement janvier?
DevelopingChris

1
C'est correct, en prime, vous pouvez l'avoir dans n'importe quelle langue localisable que vous voulez :)
leppie

20

Mis à jour avec l'espace de noms et l'objet corrects:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];

1
Cela ne marche pas. Nick Berardi a fourni la bonne réponse.
raven

1
à partir de maintenant, je vais essayer de compiler mes réponses en premier
Ovidiu Pacurar

Réalisant qu'il s'agit d'une vieille question, je tiens toujours à souligner que la réponse acceptée fournie par Nick Berandi est plus correcte (au moins pour l'implémentation de Microsoft - pas sûr de Mono), car la propriété MonthNames clone toujours le tableau des noms de mois, ce qui rend le tout un peu moins efficace.
AASoft le

7

Vous pouvez utiliser une méthode statique à partir de l' Microsoft.VisualBasicespace de noms:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);

6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

De cette façon, votre mois sera affiché par son nom et non par un entier.


2

Pour obtenir la valeur du mois abrégé, vous pouvez utiliser Enum.Parse();

Enum.Parse(typeof(Month), "0");

Cela produira "Jan" comme résultat.

N'oubliez pas qu'il s'agit d'un index de base zéro.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.