¿Hay una enumeración predefinida para el mes en the.NET ¿biblioteca?


Estoy buscando ver si hay una enumeración oficial durante meses en.net framework.

Me parece posible que haya una, debido a lo común que es el uso de mes, y porque hay otras enumeraciones similares en.net framework.

Por ejemplo, hay una enumeración para los días de la semana, Sistema.DayOfWeek, que incluye lunes, martes, etc..

Me pregunto si hay uno para los meses del año, es decir, Enero, febrero, etc?

¿Alguien lo sabe?

Author: Joe Doyle, 2009-05-22

11 answers

No lo hay, pero si quieres el nombre de un mes puedes usar:

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

Que devolverá una representación de cadena (del mes actual, en este caso). Tenga en cuenta que GetMonth toma argumentos del 1 al 13 - Enero es 1, 13 es una cadena en blanco.

 107
Author: Andy Mikula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-28 17:31:22

No, no lo hay.

 70
Author: David Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 19:27:29

Estoy buscando para ver si hay un empadronamiento oficial durante meses en el . net framework.

No.

Este es uno que preparé antes. (Versión 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
Author: wal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-30 02:59:48

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 construirla de la siguiente manera:

List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
var monthSelectList = monthNames.Select(
   m => new { Id = monthNames.IndexOf(m) + 1, Name = m });
 29
Author: Doug Lampe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-19 02:04:51

Se encontró uno en la enumeración "MonthNamesType" de este espacio de nombres: Microsoft.ServiceModel.Canal.Correo.Servicio de intercambio web.Exchange2007

La ubicación asusta un poco, pero está allí, no obstante.

 12
Author: vidalsasoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 19:36:26

¿Qué es exactamente lo que está tratando de 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,

  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 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 entero de 1 a 12...

 9
Author: Charles Bretana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 19:29:00

Sí, ciertamente lo hay. Es parte de Microsoft.Espacio de nombres VisualBasic...

Microsoft.VisualBasic.MonthName

Y para aquellos de ustedes que tienen un problema con este espacio de nombres, deben entender que realmente es.NET, y no va a ninguna parte.

Para el registro, la función MonthName llama internamente lo siguiente...

Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
 2
Author: Josh Stodola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:15

Algunos calendarios 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 construyó una enumeración en. NET.

Para los perezosos como yo a los que les hubiera gustado copiar / pegar, 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
Author: Francois Gagnon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-14 21:05:30

No lo sé con seguridad, pero mi corazonada es no. DateTime.Month devuelve un entero. Si hubiera tal enumeración, probablemente sería devuelta por DateTime.

 1
Author: Scott Wisniewski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-22 19:28:07

Estaría buscando algo como esto para codificar, como

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

Tiene este número mágico de 1. considerando que

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

Se auto-documenta

 1
Author: Jadawin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-19 16:38:25

Una enumeración sería bastante útil, pero puede obtener el resultado deseado con un formato:

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

Esto devuelve el nombre completo del mes (Enero, febrero, etc.). Use myDateTimeObject.ToString("MMM") para nombre corto (Enero, febrero, Marzo, etc.).

Si tienes un número de mes en particular, mnthNum, sin ningún DateTime, siempre podrías usar algo como esto:

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

O

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

Pero eso parece un poco desordenado. 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.

 0
Author: keith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-15 01:07:47