Question

Je cherche à voir s'il y a une énumération officielle pendant des mois dans le cadre de .net.

Il me semble possible qu'il y en a un, en raison de la façon dont l'utilisation commune du mois est, et parce qu'il existe encore d'autres énumérations dans le cadre de .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 a un pour les mois de l'année, à savoir Janvier, Février, etc?

Quelqu'un sait-il?

Était-ce utile?

La solution

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

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

qui renvoie une chaîne représentant (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

Autres conseils

Non, il n'y a pas.

  

Je cherche à voir s'il y a une   dénombrement officiel des mois dans la   NET Framework.

Non.

Heres que je préparais plus tôt. (C # Version)

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
}

DateTimeFormatInfo.CurrentInfo.MonthNames (pas ENUM, mais je pense que par exemple CurrentInfo de DateTimeFormatInfo est ce que vous recherchez en général). Si vous voulez une liste déroulante, vous pouvez le 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 });

trouvé un dans l'ENUM « MonthNamesType » de cet espace de noms: Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007

L'emplacement fait peur un peu, mais il est là quand même.

Qu'est-ce que vous essayez d'accomplir exactement?

si vous voulez simplement douze cordes avec les mois de l'année précisés, alors qui est disponible via une chaîne de format personnalisé - appliqué 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 juste être en mesure de préciser le mois comme une propriété recensée d'un autre type d'objet, la propriété Mois d'un champ DateTime renvoie un nombre entier de 1 à 12 ...

Oui, il y a certainement. Cela fait partie de l'espace de noms Microsoft.VisualBasic ...

Microsoft.VisualBasic.MonthName

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

Pour mémoire, la fonction MonthName appelle en interne ce qui suit ...

Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName

Certains calendrier ont effectivement plus de 12 mois: http://en.wikipedia.org/wiki/ mois mais je ne peux pas dire si c'était la raison pour MS n'a pas construit un ENUM dans .NET.

Pour les paresseux comme moi qui aurait 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

Je ne sais pas pour sûr, mais mon intuition est pas. DateTime.Month renvoie un entier. S'il y avait une telle énumération, il serait probablement retourné par DateTime.

Je chercherai quelque chose comme ceci à code avec, comme

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

a ce nombre magique de 1 en elle. tandis que

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

est autodocumenté

Un ENUM serait assez utile, mais vous pouvez obtenir le résultat souhaité avec un format:

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

retourne le nom complet du mois (Janvier, Février, etc.). Utilisez myDateTimeObject.ToString("MMM") pour nom court (janvier, février, mars, etc.).

Si vous avez un numéro de mois particulier, mnthNum, sans 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 est compris entre 1 et 12. Le second exemple permet (presque) tout nombre de mois et ne se limite pas à 1 à 12.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top