在.NET 库中是否有一个预定义的 Month 枚举?

我正在查看.net 框架中是否有一个数月的正式枚举。

对我来说似乎是有可能的,因为使用 month 非常普遍,而且在。网络架构。

例如,有一个一周中天数的枚举 System.DayOfWeek,其中包括星期一、星期二等。

I'm wondering if there is one for the months in the year, i.e. January, February, etc?

有人知道吗?

67873 次浏览

不,没有。

没有,但是如果你想要一个月的名字,你可以使用:

CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName (DateTime.Now.Month);

它将返回一个字符串表示形式(在本例中为当前月份)。注意,GetMonth接受从1到13的参数-January 是1,13是一个空字符串。

I don't know for sure, but my hunch is no. Month 返回一个整数。如果有这样的枚举,它可能会由 DateTime 返回。

你到底想干什么?

如果所有您想要的是12个字符串,其中指定了一年中的月份,那么可以通过自定义格式字符串提供这些字符串-应用于任何日期时间实例,

  DateTime dt = DateTime.Parse("12 January 2009");
dt.ToString("MMM");  // prints "Jan"
// (or the right abbrev is in current culture)
dt.ToString("MMMM"); // prints "January"
// (or correct sp in current culture)

如果您只是希望能够将该月份指定为其他对象类型的枚举属性,那么 DateTime 字段的 Month 属性将返回从1到12的整数..。

在此命名空间的枚举“ MonthNamesType”中找到一个: Microsoft.ServiceModel.Channels. Mail.ExchangeWebService.Exchange2007

The location kinda scares but it's there nonetheless.

I would be looking for something like this to code with, as

        if (DateTime.Now.Month != 1) // can't run this test in January.

里面有一个神奇的数字1

        if (DateTime.Now.Month != DateTime.MonthsOfYear.January)

正在自我记录

是的,当然有。它是微软的一部分。 VisualBasic 名称空间..。

Microsoft.VisualBasic.MonthName

对于那些对这个名称空间有问题的人,您应该了解 它真的是.NET,而且它不会去任何地方

作为记录,MonthName函数在内部调用以下..。

Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName

有些日历确实有超过12个月: http://en.wikipedia.org/wiki/Month,但我不能说这是 MS 没有内置枚举的原因。NET.

对于像我这样的懒人来说,在 VB 中复制/粘贴:

Public Enum MonthsOfYear
January = 1
February = 2
March = 3
April = 4
May = 5
June = 6
July = 7
August = 8
September = 9
October = 10
November = 11
December = 12
End Enum

DateTimeFormatInfo.CurrentInfo.MonthNames (not an enum, but I think that CurrentInfo instance of DateTimeFormatInfo is what you are looking for in general). If you want a drop-down list you could build it like this:

List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
var monthSelectList = monthNames.Select(
m => new { Id = monthNames.IndexOf(m) + 1, Name = m });

I'm looking to see if there is an 数月的官方数字 . net 框架。

没有。

这是我早些时候准备好的。(C # 版本)

public enum Month
{
NotSet = 0,
January = 1,
February = 2,
March = 3,
April = 4,
May = 5,
June = 6,
July = 7,
August = 8,
September = 9,
October = 10,
November = 11,
December = 12
}

枚举非常有用,但是您可以通过一种格式获得所需的结果:

DateTime myDateTimeObject=DateTime.Now; //(for example)
string monthName = myDateTimeObject.ToString("MMMM");

这将返回完整的月份名称(一月、二月等)。使用 myDateTimeObject.ToString("MMM")作为短名称(一月、二月、三月等)。

如果你有一个特定的月份数字,mnthNum,没有任何 DateTime,你总是可以使用这样的东西:

string monthName=(new DateTime(2000,mnthNum,1)).ToString("MMMM");

或者

string monthName=((new DateTime(2000,1,1)).AddMonths(mnthNum-1)ToString("MMMM");

但这看起来有点混乱。第一个示例要求 mnthNum在1到12之间。第二个示例允许(几乎)任意月份数,并且不限于1到12。

[0-11] var MonthNames = new List<string>(DateTimeFormatInfo.CurrentInfo.MonthNames);