Jak można znaleźć nazwę miesiąca w C #? Nie chcę pisać obszernego switchzestawienia lub ifoświadczenia na temat miesiąca int. W VB.Net można używać MonthName(), ale co z C #?
Mogę dodać, że istnieje InvariantInfonieruchomość, z której można również skorzystać. Moim zdaniem następujący format jest prostszy / bardziej czytelny: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)lubDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
A właściwie String.Format. Po prostu DateTime.Now.ToString („MMMM”) jest prostsze.
Jon Skeet
1
Ja też bym to zasugerował, ale już miałeś to jako inną odpowiedź. Metoda Gortoka również demonstruje użycie symboli zastępczych do formatowania, więc myślę, że jest to dobry alternatywny przykład.
Richard Anthony Hein
7
Jeśli chcesz tylko użyć MonthName, odwołaj się do Microsoft.VisualBasic i znajduje się w Microsoft.VisualBasic.DateAndTime
//eg. Get January
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);
To nie odpowiada na pytanie PO, ponieważ powiedzieli: „Naprawdę nie chcę pisać ogromnego oświadczenia o przełączniku […]” (podkreślenie moje). Przed napisaniem odpowiedzi przeczytaj szczegółowo pytania.
Odpowiedzi:
Możesz użyć CultureInfo, aby uzyskać nazwę miesiąca. Możesz nawet uzyskać krótką nazwę miesiąca, a także inne fajne rzeczy.
Sugerowałbym, abyś umieścił je w metodach rozszerzających, które pozwolą ci później napisać mniej kodu. Możesz jednak wdrożyć, jak chcesz.
Oto przykład, jak to zrobić za pomocą metod rozszerzających:
using System; using System.Globalization; class Program { static void Main() { Console.WriteLine(DateTime.Now.ToMonthName()); Console.WriteLine(DateTime.Now.ToShortMonthName()); Console.Read(); } } static class DateTimeExtensions { public static string ToMonthName(this DateTime dateTime) { return CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month); } public static string ToShortMonthName(this DateTime dateTime) { return CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month); } }
Mam nadzieję że to pomoże!
źródło
InvariantInfo
nieruchomość, z której można również skorzystać. Moim zdaniem następujący format jest prostszy / bardziej czytelny:DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)
lubDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Użyj specyfikatora formatu „MMMM”:
string month = dateTime.ToString("MMMM");
źródło
var month = new DateTime(1,i,1).ToString("MMMM");
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)
źródło
Jeśli chcesz tylko użyć MonthName, odwołaj się do Microsoft.VisualBasic i znajduje się w Microsoft.VisualBasic.DateAndTime
//eg. Get January String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);
źródło
Przypuśćmy, że masz dzisiaj randkę. Mam nadzieję, że to ci pomoże.
DateTime dt = DateTime.Today; string thisMonth= dt.ToString("MMMM"); Console.WriteLine(thisMonth);
źródło
private string MonthName(int m) { string res; switch (m) { case 1: res="Ene"; break; case 2: res = "Feb"; break; case 3: res = "Mar"; break; case 4: res = "Abr"; break; case 5: res = "May"; break; case 6: res = "Jun"; break; case 7: res = "Jul"; break; case 8: res = "Ago"; break; case 9: res = "Sep"; break; case 10: res = "Oct"; break; case 11: res = "Nov"; break; case 12: res = "Dic"; break; default: res = "Nulo"; break; } return res; }
źródło