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.

Odpowiedzi:



20

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


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];

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);

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.