Yon*_*ona 155
您可以使用它DateTimeFormatInfo
来获取该信息:
// Will return January
string name = DateTimeFormatInfo.CurrentInfo.GetMonthName(1);
Run Code Online (Sandbox Code Playgroud)
或获得所有名称:
string[] names = DateTimeFormatInfo.CurrentInfo.MonthNames;
Run Code Online (Sandbox Code Playgroud)
您还可以DateTimeFormatInfo
基于CultureInfo
with 实例化新的,DateTimeFormatInfo.GetInstance
或者您可以使用当前文化的CultureInfo.DateTimeFormat
属性.
var dateFormatInfo = CultureInfo.GetCultureInfo("en-GB").DateTimeFormat;
Run Code Online (Sandbox Code Playgroud)
请记住,.Net中的日历最多支持13个月,因此,对于仅有12个月的日历(例如在en-US或fr中找到的日历),您将在末尾获得额外的空字符串.
mmm*_*eff 28
此方法允许您将几个月的键值对列表应用于其int对应项.我们使用Enumerable Ranges和LINQ生成一行.万岁,LINQ代码打高尔夫球!
var months = Enumerable.Range(1, 12).Select(i => new { I = i, M = DateTimeFormatInfo.CurrentInfo.GetMonthName(i) });
Run Code Online (Sandbox Code Playgroud)
要将其应用于ASP下拉列表:
// <asp:DropDownList runat="server" ID="ddlMonths" />
ddlMonths.DataSource = months;
ddlMonths.DataTextField = "M";
ddlMonths.DataValueField = "I";
ddlMonths.DataBind();
Run Code Online (Sandbox Code Playgroud)
Roh*_*est 19
您可以使用以下命令返回包含月份名称的字符串数组
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthNames
Run Code Online (Sandbox Code Playgroud)
Dyl*_*tie 12
它们被定义为Globalization命名空间中的数组.
using System.Globalization;
for (int i = 0; i < 12; i++) {
Console.WriteLine(CultureInfo.CurrentUICulture.DateTimeFormat.MonthNames[i]);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
public IEnumerable<SelectListItem> Months
{
get
{
return Enumerable.Range(1, 12).Select(x => new SelectListItem
{
Value = x.ToString(),
Text = DateTimeFormatInfo.CurrentInfo.GetMonthName(x)
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从 中获取本地化月份Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames
和不变月份的列表DateTimeFormatInfo.InvariantInfo.MonthNames
。
string[] localizedMonths = Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames;
string[] invariantMonths = DateTimeFormatInfo.InvariantInfo.MonthNames;
for( int month = 0; month < 12; month++ )
{
ListItem monthListItem = new ListItem( localizedMonths[month], invariantMonths[month] );
monthsDropDown.Items.Add( monthListItem );
}
Run Code Online (Sandbox Code Playgroud)
根据日历类型的不同,一年中的月数可能存在一些问题,但在此示例中我只是假设了 12 个月。
尝试枚举月份名称:
for( int i = 1; i <= 12; i++ ){
combo.Items.Add(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[i]);
}
Run Code Online (Sandbox Code Playgroud)
它位于System.Globalization命名空间中.
希望有所帮助!
一点 LINQ 只是因为它非常简洁:
var monthOptions = DateTimeFormatInfo.CurrentInfo.MonthNames
.Where(p=>!string.IsNullOrEmpty(p))
.Select((item, index) => new { Id = index + 1, Name = item });
Run Code Online (Sandbox Code Playgroud)
您需要Where 子句,因为日历返回第13 个月的名称(英文为空)。
该索引返回 IEnumerable 内的索引,因此您需要为实际月份索引+1。
当然,我会对一个 10 多年前的问题给出我的意见。
就我而言,我创建一个返回字典(或类似的)的属性,该属性使用以下代码生成:
Dictionary<int, string> Months = Enumerable.Range(1, 12).Select(i => new KeyValuePair<int, string>(i, System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(i))).ToDictionary(x => x.Key, x => x.Value);
Run Code Online (Sandbox Code Playgroud)
输出(来自 Linqpad):
Key Value
1 January
2 February
3 March
4 April
5 May
6 June
7 July
8 August
9 September
10 October
11 November
12 December
Run Code Online (Sandbox Code Playgroud)
希望有人觉得这很有用!
归档时间: |
|
查看次数: |
60550 次 |
最近记录: |