【问题标题】:How to get complete month name from DateTime如何从 DateTime 获取完整的月份名称
【发布时间】:2011-10-09 13:49:17
【问题描述】:

获取DateTime 对象月份完整名称的正确方法是什么?
例如JanuaryDecember

我目前正在使用:

DateTime.Now.ToString("MMMMMMMMMMMMM");

我知道这不是正确的做法。

【问题讨论】:

    标签: c# datetime calendar


    【解决方案1】:

    使用the "MMMM" custom format specifier:

    DateTime.Now.ToString("MMMM");
    

    【讨论】:

    • 如果只是您感兴趣的月份,则 DateTime.Today 而不是 DateTime.Now 是进一步的简化。没有无用的时间部分,而且速度更快。
    • 令人惊讶的是,我得到的正是文本“MMMM”
    • DateTime.Now.Month.ToString("MMMM");会给你“MMMM”。那是你做的吗?
    【解决方案2】:

    应该只是DateTime.ToString( "MMMM" )

    您不需要所有额外的Ms。

    【讨论】:

      【解决方案3】:

      您可以像 mservidio suggested 那样做,或者更好的是,使用这个重载来跟踪您的文化:

      DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
      

      【讨论】:

      • 这很好,我需要研究一下这种文化。
      • 如果只是您感兴趣的月份,则 DateTime.Today 而不是 DateTime.Now 是进一步的简化。没有无用的时间部分,而且速度更快。
      【解决方案4】:

      这是

      DateTime.Now.ToString("MMMM");
      

      有 4 个Ms。

      【讨论】:

      • 如果只是您感兴趣的月份,则 DateTime.Today 而不是 DateTime.Now 是进一步的简化。没有无用的时间部分,而且速度更快。
      【解决方案5】:

      如果你想要当前月份,你可以使用 DateTime.Now.ToString("MMMM") 获取完整月份或DateTime.Now.ToString("MMM") 获取缩写月份。

      如果您想获取其他日期的月份字符串,则在将其加载到 DateTime 对象后,您可以使用该对象的相同函数:
      dt.ToString("MMMM") 获取完整月份或dt.ToString("MMM") 获取缩写月份。

      参考: Custom Date and Time Format Strings

      或者,如果您需要特定于文化的月份名称,那么您可以尝试以下方法: DateTimeFormatInfo.GetAbbreviatedMonthName Method
      DateTimeFormatInfo.GetMonthName Method

      【讨论】:

      • +1 用于从不是 DateTime.NowDateTime 中提及如何做到这一点。我以为是string mon = myDate.Month.ToString("MMM"),但遗憾的是,它在我的字符串变量中吐出了“MMM”,这让我很失望。很高兴您努力展示如何在日期本身使用.ToString("MMM") 来获取月份,而不是DateTime.Now。以及您如何解释MMMMMMM 之间的区别。此页面上的最佳答案。赞一个。
      • 如果只是您感兴趣的月份,则 DateTime.Today 而不是 DateTime.Now 是进一步的简化。没有无用的时间部分,而且速度更快。
      【解决方案6】:

      您可以使用 Culture 获取您所在国家/地区的月份名称,例如:

      System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ar-EG");
      string FormatDate = DateTime.Now.ToString("dddd., MMM dd yyyy, hh:MM tt", culture);
      

      【讨论】:

        【解决方案7】:
        DateTime birthDate = new DateTime(1981, 8, 9);
        Console.WriteLine ("I was born on the {0}. of {1}, {2}.", birthDate.Day, birthDate.ToString("MMMM"), birthDate.Year);
        
        /* The above code will say:
        "I was born on the 9. of august, 1981."
        
        "dd" converts to the day (01 thru 31).
        "ddd" converts to 3-letter name of day (e.g. mon).
        "dddd" converts to full name of day (e.g. monday).
        "MMM" converts to 3-letter name of month (e.g. aug).
        "MMMM" converts to full name of month (e.g. august).
        "yyyy" converts to year.
        */
        

        【讨论】:

          【解决方案8】:

          如果您收到“MMMM”作为响应,您可能正在获取月份,然后将其转换为已定义格式的字符串。

          DateTime.Now.Month.ToString("MMMM") 
          

          将输出“MMMM”

          DateTime.Now.ToString("MMMM") 
          

          将输出月份名称

          【讨论】:

            【解决方案9】:
            Debug.writeline(Format(Now, "dd MMMM yyyy"))
            

            【讨论】:

              【解决方案10】:

              您可以使用 System.Globalization 中的 CultureInfo 根据当前正在使用的文化来获取该数据。

              _ = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(DateTime.Now.Month)
              

              或者,使用 InvariantCulture 也可以获取英文名称。

              _ = CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(DateTime.Now.Month);
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-03-12
                • 1970-01-01
                相关资源
                最近更新 更多