Answers:
没有,但是如果您想要一个月的名字,可以使用:
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName (DateTime.Now.Month);
这将返回一个字符串表示形式(在本例中为当月)。请注意,GetMonth
参数的取值范围是1到13-一月是1,13是空白字符串。
不,没有。
Microsoft.VisualBasic.MonthName
呢
我正在寻找.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
}
NotSet
?为什么不从头开始January = 1
?那么您也可以取消其余的任务。
January
例如,它将默认用作类的属性。在大多数情况下,我不希望这样做,我希望它在明确分配之前具有“空”值
NotSet
省略并且January = 1
(其余值分别为2、3等),则此枚举的默认值为(Month)0
DateTimeFormatInfo.CurrentInfo.MonthNames
(不是枚举,但我认为您通常在寻找DateTimeFormatInfo的CurrentInfo实例)。如果您想要一个下拉列表,则可以这样构建:
List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
var monthSelectList = monthNames.Select(
m => new { Id = monthNames.IndexOf(m) + 1, Name = m });
var months = Enumerable.Range(0, 11).Select(m => new KeyValuePair<int, string>(m + 1, DateTimeFormatInfo.CurrentInfo.MonthNames[m]));
在此命名空间的枚举“ MonthNamesType”中找到一个:Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007
该位置有点吓人,但它仍然在那里。
您到底想完成什么?
如果您只需要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之间的整数。
是的,肯定有。它是Microsoft.VisualBasic命名空间的一部分...
Microsoft.VisualBasic.MonthName
对于那些对此名称空间有疑问的人,您应该了解它确实是.NET,并且不会随处可见。
为了记录,该MonthName
函数在内部调用以下内容...
Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetMonthName
IEnumerable
但不是一个enum
。因此它不起作用。
某些日历确实确实有超过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
我不确定,但我的预感不是。DateTime.Month返回一个整数。如果存在这样的枚举,则它可能由DateTime返回。
枚举将非常有用,但是您可以使用以下格式获得所需的结果:
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。