Как получить название месяца в C #?


97

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


Ответы:


171

Вы можете использовать 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

121

Используйте спецификатор формата «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;
    }

11
Это не отвечает на вопрос OP, потому что они сказали: «Я действительно не хочу писать огромный оператор переключения [...]» (выделено мной). Пожалуйста, внимательно прочтите вопросы, прежде чем писать ответ.
Сигнал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.