Wie findet man den Monatsnamen in C #? Ich möchte keine große switchErklärung oder ifErklärung über den Monat schreiben int. In VB.Net können Sie verwenden MonthName(), aber was ist mit C #?
Sie können CultureInfo verwenden, um den Monatsnamen abzurufen. Sie können sogar den kurzen Monatsnamen sowie andere lustige Dinge erhalten.
Ich würde vorschlagen, dass Sie diese in Erweiterungsmethoden einfügen, mit denen Sie später weniger Code schreiben können. Sie können jedoch implementieren, wie Sie möchten.
Hier ist ein Beispiel für die Verwendung von Erweiterungsmethoden:
using System;
using System.Globalization;classProgram{staticvoidMain(){Console.WriteLine(DateTime.Now.ToMonthName());Console.WriteLine(DateTime.Now.ToShortMonthName());Console.Read();}}staticclassDateTimeExtensions{publicstaticstringToMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month);}publicstaticstringToShortMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month);}}
Darf ich hinzufügen, dass es eine InvariantInfoEigenschaft gibt, die auch verwendet werden kann. Und meiner Meinung nach ist das Folgende ein einfacheres / lesbareres Format dafür: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)oderDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Oder eigentlich String.Format. Nur DateTime.Now.ToString ("MMMM") ist einfacher.
Jon Skeet
1
Ich hätte das auch vorgeschlagen, aber Sie hatten das bereits als eine andere Antwort. Die Methode von Gortok demonstriert auch die Verwendung von Platzhaltern für die Formatierung. Ich denke, dies ist ein gutes alternatives Beispiel.
Richard Anthony Hein
7
Wenn Sie nur MonthName verwenden möchten, verweisen Sie auf Microsoft.VisualBasic und es befindet sich in Microsoft.VisualBasic.DateAndTime
//eg. Get JanuaryString monthName =Microsoft.VisualBasic.DateAndTime.MonthName(1);
privatestringMonthName(int m){string res;switch(m){case1:
res="Ene";break;case2:
res ="Feb";break;case3:
res ="Mar";break;case4:
res ="Abr";break;case5:
res ="May";break;case6:
res ="Jun";break;case7:
res ="Jul";break;case8:
res ="Ago";break;case9:
res ="Sep";break;case10:
res ="Oct";break;case11:
res ="Nov";break;case12:
res ="Dic";break;default:
res ="Nulo";break;}return res;}
Das beantwortet nicht die Frage nach der OP, weil sie sagte: „Ich weiß wirklich nicht wollen , einen großen switch - Anweisung [...] schreiben“ (Hervorhebung von mir). Bitte lesen Sie die Fragen ausführlich durch, bevor Sie eine Antwort schreiben.
Antworten:
Sie können CultureInfo verwenden, um den Monatsnamen abzurufen. Sie können sogar den kurzen Monatsnamen sowie andere lustige Dinge erhalten.
Ich würde vorschlagen, dass Sie diese in Erweiterungsmethoden einfügen, mit denen Sie später weniger Code schreiben können. Sie können jedoch implementieren, wie Sie möchten.
Hier ist ein Beispiel für die Verwendung von Erweiterungsmethoden:
Hoffe das hilft!
quelle
InvariantInfo
Eigenschaft gibt, die auch verwendet werden kann. Und meiner Meinung nach ist das Folgende ein einfacheres / lesbareres Format dafür:DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)
oderDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Verwenden Sie den Formatbezeichner "MMMM":
quelle
var month = new DateTime(1,i,1).ToString("MMMM");
quelle
Wenn Sie nur MonthName verwenden möchten, verweisen Sie auf Microsoft.VisualBasic und es befindet sich in Microsoft.VisualBasic.DateAndTime
quelle
Angenommen, Ihr Datum ist heute. Hoffe das hilft dir.
quelle
quelle