Come ottenere il nome completo del mese da DateTime


184

Qual è il modo corretto di ottenere il nome completo del mese di un DateTimeoggetto?
es January, December.

Attualmente sto usando:

DateTime.Now.ToString("MMMMMMMMMMMMM");

So che non è il modo corretto di farlo.

Risposte:



88

Puoi fare come suggeriva mservidio , o meglio, tenere traccia della tua cultura usando questo sovraccarico:

DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);

3
È pulito, ho bisogno di esaminare questo materiale culturale.
Alex Turpin,

2
Se è solo il mese che ti interessa, DateTime.Today invece di DateTime.Now è un'ulteriore semplificazione. Nessuna porzione di tempo inutile e un po 'più veloce.
OrizG,

39

Se si desidera il mese corrente, è possibile utilizzare DateTime.Now.ToString("MMMM")per ottenere l'intero mese o DateTime.Now.ToString("MMM")per ottenere un mese abbreviato.

Se hai un'altra data per cui vuoi ottenere la stringa del mese, dopo che è stata caricata in un oggetto DateTime, puoi usare le stesse funzioni di quell'oggetto:
dt.ToString("MMMM")per ottenere l'intero mese o dt.ToString("MMM")per ottenere un mese abbreviato.

Riferimento: stringhe di formato di data e ora personalizzate

In alternativa, se hai bisogno di nomi di mese specifici per cultura, puoi provare questi: Metodo
DateTimeFormatInfo.GetAbbreviatedMonthName Metodo DateTimeFormatInfo.GetMonthName


1
+1 per menzionare come farlo da un DateTimeNOT DateTime.Now. Avevo pensato che fosse string mon = myDate.Month.ToString("MMM")quando ero tristemente deluso sputando "MMM" nella mia variabile di stringa. Sono contento che tu abbia fatto lo sforzo di mostrare come utilizzare .ToString("MMM")la data stessa per ottenere il mese, quando non lo è DateTime.Now. E come hai spiegato la differenza tra MMMe MMMM. La migliore risposta in questa pagina. Complimenti.
vapcguy,

1
Se è solo il mese che ti interessa, DateTime.Today invece di DateTime.Now è un'ulteriore semplificazione. Nessuna porzione di tempo inutile e un po 'più veloce.
OrizG,

21

Se ricevi "MMMM" come risposta, probabilmente stai ricevendo il mese e lo stai convertendo in una stringa di formato definito.

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

produrrà "MMMM"

DateTime.Now.ToString("MMMM") 

produrrà il nome del mese


16

Puoi usare Cultura per ottenere il nome del mese per il tuo paese come:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ar-EG");
string FormatDate = DateTime.Now.ToString("dddd., MMM dd yyyy, hh:MM tt", culture);

14

Suo

DateTime.Now.ToString("MMMM");

Con 4 Ms.


1
Se è solo il mese che ti interessa, DateTime.Today invece di DateTime.Now è un'ulteriore semplificazione. Nessuna porzione di tempo inutile e un po 'più veloce.
OrizG,

11

Dovrebbe essere giusto DateTime.ToString( "MMMM" )

Non hai bisogno di tutti gli extra M.


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.
*/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.