【发布时间】:2010-12-13 07:42:20
【问题描述】:
我想在 c# 中获取月份数组。
像这样的东西:{ January , February , ... , December }
我怎样才能做到这一点?请给我发送 C# 代码。
谢谢
【问题讨论】:
标签: c#
我想在 c# 中获取月份数组。
像这样的东西:{ January , February , ... , December }
我怎样才能做到这一点?请给我发送 C# 代码。
谢谢
【问题讨论】:
标签: c#
您还需要注意本地化问题: 您可以使用:
string[] monthNames =
System.Globalization.CultureInfo.CurrentCulture
.DateTimeFormat.MonthGenitiveNames;
在一些屈折语言中,属格由属格名词屈折引入,在非屈折语言中,它与英语介词“of”的等价物的使用相匹配。例如,俄语(俄罗斯)“ru-RU”文化中的日期由日期编号和属格月份名称组成。
编辑:如果您需要英文月份名称,您可以将当前文化设置为en-US
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
【讨论】:
string[] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthNames;
foreach (string m in monthNames) // writing out
{
Console.WriteLine(m);
}
输出:
January
February
March
April
May
June
July
August
September
October
November
December
更新:
请注意,对于不同的语言环境/文化,输出可能不是英语。不过之前没有测试过。
仅适用于美国英语:
string[] monthNames = (new System.Globalization.CultureInfo("en-US")).DateTimeFormat.MonthNames;
【讨论】:
MonthGenitiveNames 方法可能更合适,具体取决于上下文。
en-UScultureinfo”月份名称
string[] months = new string[] {"January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November", "December"};
【讨论】:
new string[] {,new [] { 就可以了。
希望能教您如何应用范围函数来创建连续事物的替代方法。
var startDate = new DateTime(2014,1,1);
var months = Enumerable.Range(0,11)
.Select(startDate.AddMonths);
.Select(m => m.ToString("yyyy MMMM"))
.ToList();
它所做的是创建一个 DateTime 对象 (startDate) 并使用该对象来生成与其自身相关的所有其他日期。
Enumerable.Range(0,11) 创建整数列表 {0,1,2,3,4,5,6,7,8,9,10,11}
李>Select(startDate.AddMonths) 将这些整数中的每一个都提供给 startDate 的 AddMonths 函数,该函数生成从 1 月到 12 月的日期列表。
Select(m => m.ToString("yyyy MMMM") 获取从一月到十二月的每个日期,并将它们转换为格式化字符串(在本例中为“2014 年一月”)
ToList() 计算所有函数并将其作为字符串列表返回。
【讨论】: