Najlepszy sposób na zamianę liczby całkowitej na nazwę miesiąca w języku C #?

123

Czy jest najlepszy sposób na zamianę liczby całkowitej na nazwę miesiąca w .net?

Oczywiście mogę ustawić datę i godzinę, aby ją napisać i przeanalizować nazwę miesiąca. To po prostu wydaje się gigantyczną stratą czasu.

DevelopingChris
źródło

Odpowiedzi:

20

Dlaczego po prostu nie użyć somedatetime.ToString("MMMM")?

leppie
źródło
1
Więc za każdym razem, gdy muszę zmienić 1 na styczeń, muszę zmienić datę i godzinę z dowolnym rokiem i dniem, aby po prostu uzyskać styczeń?
DevelopingChris
1
Zgadza się, jako bonus możesz mieć to w dowolnym języku, który chcesz zlokalizować :)
leppie
20

Zaktualizowano o poprawną przestrzeń nazw i obiekt:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];
Ovidiu Pacurar
źródło
1
To nie działa. Nick Berardi udzielił poprawnej odpowiedzi.
raven
1
od teraz spróbuję najpierw skompilować swoje odpowiedzi
Ovidiu Pacurar
Zdając sobie sprawę, że to stare pytanie, nadal chcę zaznaczyć, że zaakceptowana odpowiedź udzielona przez Nicka Berandiego jest bardziej poprawna (przynajmniej w przypadku implementacji Microsoftu - nie jestem pewien co do Mono), ponieważ właściwość MonthNames zawsze klonuje tablicę nazw miesięcy, dzięki czemu całość jest odrobinę mniej wydajna.
AASoft,
7

Możesz użyć metody statycznej z Microsoft.VisualBasicprzestrzeni nazw:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);
Tokabi
źródło
6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

W ten sposób Twój miesiąc będzie wyświetlany według nazwy, a nie liczby całkowitej.

user1534576
źródło
2

Aby uzyskać skróconą wartość miesiąca, możesz użyć Enum.Parse();

Enum.Parse(typeof(Month), "0");

Spowoduje to utworzenie „Jan”.

Pamiętaj, że to indeks liczony od zera.

sth
źródło