Uzyskaj nazwę miesiąca od numeru miesiąca

254

Możliwe duplikaty:
jak uzyskać MonthName w C #?

Użyłem następującej składni c #, aby uzyskać nazwę miesiąca od miesiąca nie, ale dostaję Augustchcę tylko Aug..

System.Globalization.DateTimeFormatInfo mfi = new 
System.Globalization.DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString();

Jakieś sugestie...

bala3569
źródło
3
Oprócz .GetMonthName (int) nie wraca ciąg, którego szukasz, to nie zwraca ciąg, więc .ToString () jest niepotrzebny
DaveD
1
Czy nie byłoby łatwiej po prostu dodać .Substring (0,3)?
Federico Navarrete
Możliwy duplikat Jak uzyskać nazwę miesiąca w C #?
Cœur

Odpowiedzi:

349

W przypadku krótkich nazw miesięcy użyj:

string monthName = new DateTime(2010, 8, 1)
    .ToString("MMM", CultureInfo.InvariantCulture);

Dla długich / pełnych miesięcy nazw dla kultury hiszpańskiej („es”)

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));
Darin Dimitrov
źródło
jak powinienem użyć powyższego kodu, jeśli chcę „sierpnia”? pełna nazwa miesiąca?
Albert Laure,
25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke
This: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" daje mi: „Niezwyciężony element członkowski„ System.Globalization.CultureInfo.InvariantCulture ”nie może być używany jako metoda”.
B. Clay Shannon
B. Clay Shannon add () around (new DateTime (1958, miesiąc, 1))
jądrowy słodki
2
Ta odpowiedź nie jest najlepszym IMHO do pracy na podstawie numeru miesiąca zamiast DateTime, jak w pytaniu OP. Odpowiedź Lasse V. Karlsena jest prostsza w przypadku krótkiego imienia. Aby uzyskać nazwę miesiąca w lokalnej kulturze, użyj CultureInfo.CurrentCulture jak w odpowiedzi CharithJ.
AFract
290

Skrócone nazwy miesięcy: „Aug”

DateTimeFormatInfo.GetAbbreviatedMonthName Metoda (Int32)

Zwraca specyficzną dla kultury skróconą nazwę określonego miesiąca na podstawie kultury powiązanej z bieżącym obiektem DateTimeFormatInfo.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(8)

Pełne nazwy miesięcy: „sierpień”

DateTimeFormatInfo.GetMonthName Metoda (Int32)

Zwraca pełną nazwę specyficzną dla kultury określonego miesiąca na podstawie kultury powiązanej z bieżącym obiektem DateTimeFormatInfo.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);
CharithJ
źródło
2
GetMonthName zwraca pełną nazwę miesiąca. Jeśli potrzebujesz go jako JAN, FEB itp., Możesz użyć var ​​month = 10; string monthName = new DateTime (2014, miesiąc, 1) .ToString („MMM”, CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov
3
@DmitryPavlov GetAbbreviatedMonthName()to lepszy sposób, aby to zrobić.
NickG
2
DateTimeFormatInfo powinien być DateTimeFormat (przynajmniej w .net 4.6)
TravisWhidden
Druga opcja zadziałała dla mnie, chociaż użyłem GetCultureInfo("en-GB")zamiast tego, CurrentCultureponieważ chciałem mieć pewność, że moje imię miesiąca zawsze będzie w języku angielskim
Maurice Klimek
To powinna być najlepsza odpowiedź. Uratowałem mój dzień. Dzięki.
Mahmoud Eidarous
12

Chcesz GetAbbreviatedMonthName

AakashM
źródło
11

Możesz to uzyskać w następujący sposób,

DateTimeFormatInfo mfi = new DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString(); //August

Teraz zdobądź pierwsze trzy postacie

string shortMonthName = strMonthName.Substring(0, 3); //Aug
Thili77
źródło
9
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Ta metoda zwraca April

Jeśli potrzebujesz specjalnego języka, możesz dodać:

<system.web>
    <globalization culture="es-ES" uiCulture="es-ES"></globalization>
     <compilation debug="true"
</system.web>

Lub preferowany język.

Na przykład z es-ESkulturą:

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Zwroty: Abril

Zwraca: Abril(w języku hiszpańskim, ponieważ skonfigurowaliśmy culture as es-ESw naszym webconfigpliku, w przeciwnym razie otrzymasz April)

To powinno działać.

MrMins
źródło
5

Powinno to zwrócić tekst miesiąca (styczeń - grudzień) z indeksu miesiąca (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);
Rishin C.
źródło
1
Podaj dodatkowe informacje. Nie tylko kod pocztowy
ochs.tobi
1
var month = 5;
var cultureSwe = "sv-SE";
var monthSwe = CultureInfo.CreateSpecificCulture(cultureSwe).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthSwe);

var cultureEn = "en-US";
var monthEn = CultureInfo.CreateSpecificCulture(cultureEn).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthEn);

Wynik

maj
may
Joel Wiklund
źródło