Existe-t-il une énumération prédéfinie pour Month in the.NET bibliothèque?

Je cherche à voir s'il existe une énumération officielle pendant des mois dans le framework.net.

Il me semble possible qu'il y en ait un, à cause de la fréquence de l'utilisation de month, et parce qu'il existe d'autres énumérations de ce type dans le framework. net.

Par exemple, il y a une énumération pour les jours de la semaine, System.DayOfWeek, qui comprend lundi, mardi, etc..

Je me demande s'il y en a un pour les mois de l'année, c'est-à-dire Janvier, Février, etc?

Quelqu'un le sait?

88
demandé sur Joe Doyle 2009-05-22 23:21:28

11 réponses

Il n'y en a pas, mais si vous voulez le nom d'un mois, vous pouvez utiliser:

CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName (DateTime.Now.Month);

Qui retournera une représentation de chaîne (du mois en cours, dans ce cas). Notez que GetMonth prend des arguments de 1 à 13-Janvier est 1, 13 est une chaîne vide.

107
répondu Andy Mikula 2011-07-28 17:31:22

Non, il n'y en a pas.

70
répondu David Nelson 2009-05-22 19:27:29

Je cherche à voir s'il y a un dénombrement officiel pendant des mois dans le . NET framework.

Non.

Voici celui que j'ai préparé plus tôt. (Version C#)

public enum Month
{
    NotSet = 0,
    January = 1,
    February = 2,
    March = 3,
    April = 4,
    May = 5,
    June = 6,
    July = 7,
    August = 8,
    September = 9,
    October = 10,
    November = 11,
    December = 12
}
32
répondu wal 2011-03-30 02:59:48

DateTimeFormatInfo.CurrentInfo.MonthNames (Pas une énumération, mais je pense que L'instance CurrentInfo de DateTimeFormatInfo est ce que vous recherchez en général). Si vous voulez une liste déroulante, vous pouvez construire comme ceci:

List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
var monthSelectList = monthNames.Select(
   m => new { Id = monthNames.IndexOf(m) + 1, Name = m });
29
répondu Doug Lampe 2011-02-19 02:04:51

En a trouvé un dans l'énumération "MonthNamesType" de cet espace de noms: Microsoft.ServiceModel.Canal.Courrier.ExchangeWebService.Exchange2007

L'emplacement fait un peu peur mais il est néanmoins là.

12
répondu vidalsasoon 2009-05-22 19:36:26

Qu'essayez-vous d'accomplir exactement?

Si tout ce que vous voulez est douze chaînes avec les mois de l'année épelés, alors cela est disponible via une chaîne de format personnalisé-appliquée pour toute instance d'un datetime,

  DateTime dt = DateTime.Parse("12 January 2009";
   dt.ToString("MMM");  // prints "Jan" 
                        // (or the right abbrev is in current culture)
   dt.ToString("MMMM"); // prints "January" 
                        // (or correct sp in current culture)

Si vous voulez simplement pouvoir spécifier le mois en tant que propriété énumérée d'un autre type d'objet, la propriété Month d'un champ DateTime renvoie un entier de 1 à 12...

9
répondu Charles Bretana 2009-05-22 19:29:00

Oui, il y en a certainement. Il fait partie de Microsoft.Espace de noms VisualBasic...

Microsoft.VisualBasic.MonthName

Et pour ceux d'entre vous qui ont un problème avec cet espace de noms, Vous devez comprendre que c'est vraiment. net, et ça ne va nulle part .

Pour l'enregistrement, la fonction MonthName appelle en interne ce qui suit...

Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
2
répondu Josh Stodola 2017-05-23 11:47:15

Certains calendriers ont en effet plus de 12 mois: http://en.wikipedia.org/wiki/Month mais je ne peux pas dire si C'était la raison pour laquelle MS n'a pas construit une énumération dans. NET.

Pour les paresseux comme moi qui auraient aimé un copier / coller, en VB:

Public Enum MonthsOfYear
    January = 1
    February = 2
    March = 3
    April = 4
    May = 5
    June = 6
    July = 7
    August = 8
    September = 9
    October = 10
    November = 11
    December = 12
End Enum
2
répondu Francois Gagnon 2010-12-14 21:05:30

Je ne sais pas avec certitude, mais mon intuition est non. DateTime.Mois qui renvoie un entier. S'il y avait une telle énumération, elle serait probablement retournée par DateTime.

1
répondu Scott Wisniewski 2009-05-22 19:28:07

Je chercherais quelque chose comme ça à coder avec, comme

        if (DateTime.Now.Month != 1) // can't run this test in January.

A ce nombre magique de 1 dedans. considérant ce qui suit

        if (DateTime.Now.Month != DateTime.MonthsOfYear.January) 

Est auto-documentant

1
répondu Jadawin 2010-01-19 16:38:25

Enum serait plutôt utile, mais vous pouvez obtenir le résultat souhaité avec un format:

DateTime myDateTimeObject=DateTime.Now; //(for example)
string monthName = myDateTimeObject.ToString("MMMM");

Renvoie le nom complet du mois (janvier, février, ... ). Utilisez myDateTimeObject.ToString("MMM") pour le nom court (Jan, Feb, Mar, etc.).

Si vous avez un particulier mois nombre, mnthNum, sans aucun DateTime, vous pouvez toujours utiliser quelque chose comme ceci:

string monthName=(new DateTime(2000,mnthNum,1)).ToString("MMMM");

Ou

string monthName=((new DateTime(2000,1,1)).AddMonths(mnthNum-1)ToString("MMMM");

Mais cela semble un peu désordonné. Le premier exemple exige que mnthNum soit compris entre 1 et 12. Le deuxième exemple permet de (presque) n'importe quel numéro de mois et n'est pas limité à 1 à 12.

0
répondu keith 2012-11-15 01:07:47