Je cherche à savoir s’il y a une énumération officielle pour les mois dans le cadre .net.
Il me semble possible qu’il y en ait une, à cause de la fréquence d’utilisation du mois, et parce qu’il existe d’autres énumérations dans le cadre du .net.
Par exemple, il existe une énumération pour les jours de la semaine, System.DayOfWeek, qui comprend le lundi, le mardi, etc.
Je me demande s’il y en a un pour les mois de l’année, soit janvier, février, etc.
Est-ce que quelqu’un sait?
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 sous forme de chaîne (du mois en cours, dans ce cas). Notez que GetMonth
prend des arguments du 1 au 13 – janvier est 1, 13 est une chaîne vide.
Non, il n’y en a pas.
Je cherche à savoir s’il y a une énumération officielle pour les mois dans le cadre .net.
Non.
Heres 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 }
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 la créer comme ceci:
List monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList(); var monthSelectList = monthNames.Select( m => new { Id = monthNames.IndexOf(m) + 1, Name = m });
Trouvé dans l’énumération “MonthNamesType” de cet espace de noms: Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007
L’emplacement fait un peu peur mais c’est quand même là.
Qu’est-ce que vous essayez exactement d’accomplir?
si tout ce que vous voulez, c’est douze chaînes avec les mois de l’année épelés, alors c’est disponible via une chaîne de format personnalisée – appliquée pour toute instance d’un datetime,
DateTime dt = DateTime.Parse("12 January 2009"; dt.ToSsortingng("MMM"); // prints "Jan" // (or the right abbrev is in current culture) dt.ToSsortingng("MMMM"); // prints "January" // (or correct sp in current culture)
Si vous souhaitez simplement spécifier le mois en tant que propriété énumérée d’un autre type d’object, la propriété Month d’un champ DateTime renvoie un entier compris entre 1 et 12 …
Oui, il y en 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 c’est vraiment .NET et qu’il ne va nulle part .
Pour l’enregistrement, la fonction MonthName
appelle en interne les éléments suivants …
Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
Certains calandres ont en effet plus de 12 mois: http://en.wikipedia.org/wiki/Month mais je ne peux pas dire si c’est la raison pour laquelle MS n’a pas créé d’é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
Je ne sais pas avec certitude, mais mon intuition est non. DateTime.Month renvoie un entier. S’il y avait une telle énumération, elle serait probablement renvoyée par DateTime.
Je chercherais quelque chose comme ça pour coder avec, comme
if (DateTime.Now.Month != 1) // can't run this test in January.
a ce nombre magique de 1 dedans. tandis que
if (DateTime.Now.Month != DateTime.MonthsOfYear.January)
est auto-documenté
Un enum serait plutôt utile, mais vous pouvez obtenir le résultat souhaité avec un format:
DateTime myDateTimeObject=DateTime.Now; //(for example) ssortingng monthName = myDateTimeObject.ToSsortingng("MMMM");
Cela renvoie le nom du mois complet (janvier, février, etc.). Utilisez myDateTimeObject.ToSsortingng("MMM")
pour le nom abrégé (Jan, Feb, Mar, etc.).
Si vous avez un numéro de mois particulier, mnthNum
, sans DateTime
, vous pouvez toujours utiliser quelque chose comme ceci:
ssortingng monthName=(new DateTime(2000,mnthNum,1)).ToSsortingng("MMMM");
ou
ssortingng monthName=((new DateTime(2000,1,1)).AddMonths(mnthNum-1)ToSsortingng("MMMM");
Mais cela semble un peu désordonné. Le premier exemple requirejs que mnthNum
soit compris entre 1 et 12. Le deuxième exemple autorise (presque) n’importe quel numéro de mois et n’est pas limité à 1 à 12.