Jak uzyskać pełną nazwę miesiąca od DateTime

183

Jaki jest właściwy sposób uzyskania pełnej nazwy miesiąca DateTimeobiektu?
np January, December.

Obecnie używam:

DateTime.Now.ToString("MMMMMMMMMMMMM");

Wiem, że to niewłaściwy sposób.

shA.t
źródło

Odpowiedzi:

272

Użyj niestandardowego specyfikatora formatu „MMMM” :

DateTime.Now.ToString("MMMM");
mservidio
źródło
3
Jeśli interesuje Cię tylko miesiąc, to DateTime.Today zamiast DateTime.Now to kolejne uproszczenie. Bez zbędnej porcji czasu i trochę szybciej.
OrizG,
5
Zaskakujące, że dostaję sam tekst „MMMM”
Chagbert,
88

Możesz zrobić to, co sugeruje mservidio , lub jeszcze lepiej, śledzić swoją kulturę, korzystając z tego przeciążenia:

DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
emp
źródło
3
To miłe, muszę przyjrzeć się tym kulturom.
Alex Turpin,
2
Jeśli interesuje Cię tylko miesiąc, to DateTime.Today zamiast DateTime.Now to kolejne uproszczenie. Bez zbędnej porcji czasu i trochę szybciej.
OrizG,
39

Jeśli chcesz bieżącego miesiąca, możesz użyć go, DateTime.Now.ToString("MMMM")aby uzyskać pełny miesiąc lub DateTime.Now.ToString("MMM")skrócić miesiąc.

Jeśli masz inną datę, dla której chcesz uzyskać ciąg miesiąca, po załadowaniu go do obiektu DateTime, możesz użyć tych samych funkcji dla tego obiektu:
dt.ToString("MMMM")uzyskać pełny miesiąc lub dt.ToString("MMM")skrócić miesiąc.

Odniesienie: Niestandardowe ciągi formatu daty i godziny

Alternatywnie, jeśli potrzebujesz nazw miesięcy specyficznych dla kultury, możesz wypróbować następujące: Metoda
DateTimeFormatInfo.GetAbbreviatedMonthName Metoda DateTimeFormatInfo.GetMonthName

Jeffrey Blake
źródło
1
+1 za wzmiankę o tym, jak to zrobić z DateTimeNIE, który jest NIE DateTime.Now. Wydawało mi się, że to string mon = myDate.Month.ToString("MMM")niestety zawiodło mnie, gdy wyplułam „MMM” na moją zmienną łańcuchową. Cieszę się, że podjąłeś wysiłek, aby pokazać, jak korzystać .ToString("MMM")z tej daty, aby uzyskać miesiąc, kiedy nie jest DateTime.Now. I jak wyjaśniłeś różnicę między MMMi MMMM. Najlepsza odpowiedź na tej stronie. Sława.
vapcguy,
1
Jeśli interesuje Cię tylko miesiąc, to DateTime.Today zamiast DateTime.Now to kolejne uproszczenie. Bez zbędnej porcji czasu i trochę szybciej.
OrizG,
21

Jeśli otrzymasz odpowiedź „MMMM”, prawdopodobnie otrzymujesz miesiąc, a następnie konwertujesz go na ciąg zdefiniowanego formatu.

DateTime.Now.Month.ToString("MMMM") 

wyświetli „MMMM”

DateTime.Now.ToString("MMMM") 

wyświetli nazwę miesiąca

Sabarish Ramachandran
źródło
16

Możesz użyć Kultury, aby uzyskać nazwę miesiąca dla swojego kraju, na przykład:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ar-EG");
string FormatDate = DateTime.Now.ToString("dddd., MMM dd yyyy, hh:MM tt", culture);
Yehia Elhawary
źródło
14

Jego

DateTime.Now.ToString("MMMM");

Z 4 Ms.

Alex Turpin
źródło
1
Jeśli interesuje Cię tylko miesiąc, to DateTime.Today zamiast DateTime.Now to kolejne uproszczenie. Bez zbędnej porcji czasu i trochę szybciej.
OrizG,
11

Tak powinno być DateTime.ToString( "MMMM" )

Nie potrzebujesz wszystkich dodatkowych M.

Stefan H.
źródło
9
DateTime birthDate = new DateTime(1981, 8, 9);
Console.WriteLine ("I was born on the {0}. of {1}, {2}.", birthDate.Day, birthDate.ToString("MMMM"), birthDate.Year);

/* The above code will say:
"I was born on the 9. of august, 1981."

"dd" converts to the day (01 thru 31).
"ddd" converts to 3-letter name of day (e.g. mon).
"dddd" converts to full name of day (e.g. monday).
"MMM" converts to 3-letter name of month (e.g. aug).
"MMMM" converts to full name of month (e.g. august).
"yyyy" converts to year.
*/
Madolite
źródło