如何从 DateTime 获取完整的月份名称
Posted
技术标签:
【中文标题】如何从 DateTime 获取完整的月份名称【英文标题】:How to get complete month name from DateTime 【发布时间】:2011-10-09 13:49:17 【问题描述】:获取DateTime
对象月份完整名称的正确方法是什么?
例如January
,December
。
我目前正在使用:
DateTime.Now.ToString("MMMMMMMMMMMMM");
我知道这不是正确的做法。
【问题讨论】:
【参考方案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" )
您不需要所有额外的M
s。
【讨论】:
【参考方案3】:您可以像 mservidio suggested 那样做,或者更好的是,使用这个重载来跟踪您的文化:
DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
【讨论】:
这很好,我需要研究一下这种文化。 如果只是您感兴趣的月份,则 DateTime.Today 而不是 DateTime.Now 是进一步的简化。没有无用的时间部分,而且速度更快。【参考方案4】:这是
DateTime.Now.ToString("MMMM");
有 4 个M
s。
【讨论】:
如果只是您感兴趣的月份,则 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 MethodDateTimeFormatInfo.GetMonthName Method
【讨论】:
+1 用于从不是DateTime.Now
的 DateTime
中提及如何做到这一点。我以为是string mon = myDate.Month.ToString("MMM")
,但遗憾的是,它在我的字符串变量中吐出了“MMM”,这让我很失望。很高兴您努力展示如何在日期本身使用.ToString("MMM")
来获取月份,而不是DateTime.Now
。以及您如何解释MMM
和MMMM
之间的区别。此页面上的最佳答案。赞一个。
如果只是您感兴趣的月份,则 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);
【讨论】:
以上是关于如何从 DateTime 获取完整的月份名称的主要内容,如果未能解决你的问题,请参考以下文章