Як отримати назву місяця в C #?


94

Як можна знайти назву місяця в C #? Я не хочу писати величезну switchзаяву або ifзаяву за місяць int. У VB.Net ви можете використовувати MonthName(), а як щодо C #?


Відповіді:


167

Ви можете використовувати 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);
    }
}

Сподіваюся, це допомагає!


5
InvariantInfoМожна додати, що є властивість, якою можна також скористатися. І, на мій погляд, наступний є більш простим / читабельним форматом для цього: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)абоDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
bsara

119

Використовуйте специфікатор формату "MMMM":

string month = dateTime.ToString("MMMM");

17
припускаючи, що у вас є побачення. якщо ні:var month = new DateTime(1,i,1).ToString("MMMM");
Myster

14
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)

Вам не потрібен ToString ().
Річард Ентоні Хайн

5
Або String.Format, власне. Просто DateTime.Now.ToString ("MMMM") простіший.
Джон Скіт,

1
Я б також запропонував це, але у вас це вже була інша відповідь. Метод Гортока також демонструє використання заповнювачів для форматування, тому я думаю, що це хороший альтернативний приклад.
Річард Ентоні Хайн

7

Якщо ви просто хочете використовувати MonthName, тоді зверніться до Microsoft.VisualBasic, і це в Microsoft.VisualBasic.DateAndTime

//eg. Get January
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);

7

Припустимо, ваша дата сьогодні. Сподіваюся, це вам допоможе.

DateTime dt = DateTime.Today;

string thisMonth= dt.ToString("MMMM");

Console.WriteLine(thisMonth);

-15
    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;
    }

10
Це не відповідає на питання OP, оскільки вони сказали: "Я справді не хочу писати величезну заяву про перемикання [...]" (підкреслення моє). Будь ласка, детально прочитайте питання перед написанням відповіді.
гудок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.