Estoy buscando ver si hay una enumeración oficial durante meses en el marco .net.
Me parece posible que haya uno, debido a lo común que es el uso del mes y porque hay otras enumeraciones similares en el marco .net.
Por ejemplo, hay una enumeración para los días de la semana, System.DayOfWeek, que incluye lunes, martes, etc.
Me pregunto si hay uno para los meses del año, es decir, enero, febrero, etc.
¿Alguien sabe?
c#
.net
datetime
enumeration
Mark Rogers
fuente
fuente
No, no lo hay.
fuente
Microsoft.VisualBasic.MonthName
?No.
Aquí hay uno que preparé antes. (Versión C #)
fuente
NotSet
? ¿Por qué no empezar conJanuary = 1
? entonces podrías acabar con el resto de las asignaciones también ..January
si, por ejemplo, se usa como una propiedad para una clase. en la mayoría de los casos, no quiero eso, quiero que tenga un valor 'nulo' antes de que se asigne explícitamenteNotSet
se omite yJanuary = 1
(y el resto de los valores son 2, 3, etc.) entonces el valor predeterminado de esta enumeración sería(Month)0
DateTimeFormatInfo.CurrentInfo.MonthNames
(no es una enumeración, pero creo que la instancia CurrentInfo de DateTimeFormatInfo es lo que está buscando en general). Si desea una lista desplegable, puede crearla así:fuente
var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
Se encontró uno en la enumeración "MonthNamesType" de este espacio de nombres: Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007
La ubicación asusta un poco, pero está ahí.
fuente
¿Qué es exactamente lo que intenta lograr?
si todo lo que desea son doce cadenas con los meses del año detallados, entonces eso está disponible a través de una cadena de formato personalizado, aplicada para cualquier instancia de una fecha y hora,
si solo desea poder especificar el mes como una propiedad enumerada de algún otro tipo de objeto, entonces la propiedad Month de un campo DateTime devuelve un número entero de 1 a 12 ...
fuente
Sí, ciertamente la hay. Es parte del espacio de nombres Microsoft.VisualBasic ...
Y para aquellos de ustedes que tienen un problema con este espacio de nombres, deben comprender que realmente es .NET y que no va a ninguna parte .
Para el registro, la
MonthName
función llama internamente a lo siguiente ...fuente
IEnumerable
pero no es unaenum
eración. Entonces no funciona.Algunos calendarios de hecho tienen más de 12 meses: http://en.wikipedia.org/wiki/Month pero no puedo decir si fue la razón por la que MS no creó una enumeración en .NET.
Para los perezosos como yo que les hubiera gustado copiar / pegar, en VB:
fuente
No lo sé con certeza, pero mi corazonada es no. DateTime.Month devuelve un número entero. Si hubiera tal enumeración, probablemente la devolvería DateTime.
fuente
Estaría buscando algo como esto para codificar, como
tiene este número mágico de 1. mientras
es autodocumentado
fuente
Una enumeración sería bastante útil, pero puede obtener el resultado deseado con un formato:
Esto devuelve el nombre completo del mes (enero, febrero, etc.). Úselo
myDateTimeObject.ToString("MMM")
para el nombre corto (enero, febrero, marzo, etc.).Si tiene un número de mes en particular
mnthNum
, sin ningunoDateTime
, siempre puede usar algo como esto:o
Pero eso parece un poco complicado. El primer ejemplo requiere que
mnthNum
esté entre 1 y 12. El segundo ejemplo permite (casi) cualquier número de mes y no está restringido a 1 a 12.fuente