Estou procurando ver se há uma enumeração oficial para meses na estrutura .net.
Parece-me possível que haja um, por causa do quão comum é o uso de mês, e porque há outras enumerações na estrutura .net.
Por exemplo, há uma enumeração para os dias da semana, System.DayOfWeek, que inclui segunda, terça, etc.
Gostaria de saber se existe um para os meses do ano, ou seja, janeiro, fevereiro, etc?
Alguém sabe?
c#
.net
datetime
enumeration
Mark Rogers
fonte
fonte
Não, não há.
fonte
Microsoft.VisualBasic.MonthName
?Não.
Aqui está um que preparei anteriormente. (Versão C #)
fonte
NotSet
? Por que não começarJanuary = 1
? então você poderia acabar com o resto das atribuições também ..January
se, por exemplo, for usado como uma propriedade para uma classe. na maioria dos casos eu não quero isso, eu quero isso para ter um valor 'nulo' antes de ser explicitamente atribuídoNotSet
for omitido eJanuary = 1
(e o resto dos valores são 2, 3, etc.), o padrão deste enum seria(Month)0
DateTimeFormatInfo.CurrentInfo.MonthNames
(não é um enum, mas acho que a instância CurrentInfo de DateTimeFormatInfo é o que você está procurando em geral). Se você quiser uma lista suspensa, poderá criá-la assim:fonte
var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
Encontrado um no enum "MonthNamesType" deste namespace: Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007
A localização meio que assusta, mas está lá mesmo assim.
fonte
O que exatamente você está tentando realizar?
se tudo o que você quiser são doze strings com os meses do ano explicados, isso está disponível por meio de uma string de formato personalizado - aplicada a qualquer instância de data e hora,
se você deseja apenas especificar o mês como uma propriedade enumerada de algum outro tipo de objeto, a propriedade Mês de um campo DateTime retorna um número inteiro de 1 a 12 ...
fonte
Sim, certamente existe. Faz parte do namespace Microsoft.VisualBasic ...
E para aqueles de vocês que têm problemas com este namespace, devem entender que ele realmente é .NET e não vai a lugar nenhum .
Para registro, a
MonthName
função chama internamente o seguinte ...fonte
IEnumerable
mas não é umaenum
eração. Portanto, não funciona.Alguns calendários realmente têm mais de 12 meses: http://en.wikipedia.org/wiki/Month, mas não posso dizer se foi o motivo pelo qual o MS não criou um enum no .NET.
Para os preguiçosos como eu que gostariam de copiar / colar, em VB:
fonte
Não sei ao certo, mas meu palpite é não. DateTime.Month retorna um número inteiro. Se houvesse tal enumeração, provavelmente seria retornada por DateTime.
fonte
Eu estaria procurando algo assim para codificar, como
tem este número mágico de 1 nele. enquanto que
é autodocumentado
fonte
Um enum seria bastante útil, mas você pode obter o resultado desejado com um formato:
Isso retorna o nome completo do mês (janeiro, fevereiro, etc.). Use
myDateTimeObject.ToString("MMM")
para nome curto (janeiro, fevereiro, março, etc.).Se você tem um número de mês específico
mnthNum
, sem nenhumDateTime
, você sempre pode usar algo assim:ou
Mas isso parece um pouco confuso. O primeiro exemplo requer que
mnthNum
esteja entre 1 e 12. O segundo exemplo permite (quase) qualquer número de mês e não está restrito a 1 a 12.fonte