Как найти название месяца в C #? Я не хочу писать громкие switchзаявления или ifзаявления за месяц int. В VB.Net можно использовать MonthName(), а как насчет C #?
Могу я добавить, что есть InvariantInfoсвойство, которое тоже можно использовать. И, на мой взгляд, для этого более простой / читаемый формат: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)илиDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Или вообще String.Format. Просто DateTime.Now.ToString ("MMMM") проще.
Джон Скит,
1
Я бы тоже предложил это, но у вас уже был этот ответ. Метод Гортока также демонстрирует использование заполнителей для форматирования, поэтому я думаю, что это хороший альтернативный пример.
Ричард Энтони Хейн
7
Если вы просто хотите использовать MonthName, укажите Microsoft.VisualBasic, и он находится в Microsoft.VisualBasic.DateAndTime.
//eg. Get January
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);
Это не отвечает на вопрос OP, потому что они сказали: «Я действительно не хочу писать огромный оператор переключения [...]» (выделено мной). Пожалуйста, внимательно прочтите вопросы, прежде чем писать ответ.
Ответы:
Вы можете использовать CultureInfo, чтобы получить название месяца. Вы даже можете получить короткое название месяца, а также другие забавные вещи.
Я бы посоветовал вам поместить их в методы расширения, что позволит вам писать меньше кода позже. Однако вы можете реализовать, как хотите.
Вот пример того, как это сделать с помощью методов расширения:
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); } }
Надеюсь это поможет!
источник
InvariantInfo
свойство, которое тоже можно использовать. И, на мой взгляд, для этого более простой / читаемый формат:DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)
илиDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Используйте спецификатор формата «MMMM»:
string month = dateTime.ToString("MMMM");
источник
var month = new DateTime(1,i,1).ToString("MMMM");
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)
источник
Если вы просто хотите использовать MonthName, укажите Microsoft.VisualBasic, и он находится в Microsoft.VisualBasic.DateAndTime.
//eg. Get January String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);
источник
Предположим, у вас сегодня свидание. Надеюсь, это тебе поможет.
DateTime dt = DateTime.Today; string thisMonth= dt.ToString("MMMM"); Console.WriteLine(thisMonth);
источник
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; }
источник