【问题标题】:How to get the month name in C#?如何在 C# 中获取月份名称?
【发布时间】:2010-11-01 19:26:56
【问题描述】:

如何在 C# 中查找月份名称?我不想在int 月份写一个巨大的switch 声明或if 声明。在 VB.Net 中你可以使用MonthName(),但是 C# 呢?

【问题讨论】:

标签: c# datetime


【解决方案1】:

您可以使用 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(...)
【解决方案2】:

使用“MMMM”格式说明符:

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

【讨论】:

  • 假设您有约会。如果没有:var month = new DateTime(1,i,1).ToString("MMMM");
【解决方案3】:
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)

【讨论】:

  • 你不需要 ToString()。
  • 或 String.Format,实际上。只是 DateTime.Now.ToString("MMMM") 更简单。
  • 我也建议这样做,但您已经将其作为另一个答案。 Gortok 的方法还演示了使用占位符进行格式化,所以我认为这是一个很好的替代示例。
【解决方案4】:

假设你的日期是今天。希望对您有所帮助。

DateTime dt = DateTime.Today;

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

Console.WriteLine(thisMonth);

【讨论】:

    【解决方案5】:

    如果您只想使用 MonthName,请参考 Microsoft.VisualBasic,它位于 Microsoft.VisualBasic.DateAndTime 中

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

    【讨论】:

      【解决方案6】:
          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;
          }
      

      【讨论】:

      • 这并没有回答 OP 的问题,因为他们说:“我真的想写一个巨大的 switch 语句 [...]”(强调我的)。请在写答案之前详细阅读问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 2011-03-12
      • 2018-03-01
      • 2017-08-15
      相关资源
      最近更新 更多