【问题标题】:Fill combobox with english months用英语月份填充组合框
【发布时间】:2009-04-26 22:32:46
【问题描述】:

我必须用英文月份填写一个组合框:一月、二月等。 我做了下一个方法:

private string[] AmericanMonths
{
  get
  {
    var arr = new string[12];
    var americanCulture = new CultureInfo("en-US");
    for (int i = 0; i < 12; i++)
    {
      arr[i] = new DateTime(2000, i + 1, 1).ToString("MMMM", americanCulture);
    }
    return arr;
  }
}

comboMonth.Items.AddRange(AmericanMonths);

你怎么看,哪种方式更好(性能)?

有没有办法将表示月份数的整数转换为它的名称?

【问题讨论】:

    标签: c# .net datetime globalization


    【解决方案1】:

    CultureInfo 已经在框架中包含月份名称列表。你可以写:

    var americanCulture = new CultureInfo("en-US");
    comboMonth.Items.AddRange(americanCulture.DateTimeFormat.MonthNames.Take(12)); //to remove last empty element
    

    【讨论】:

    • +1 用于使用描述性变量名称来使代码“自我记录”!
    • 谢谢!您如何看待,删除该数组中最后一个空项目的最佳方法是什么?我发现只有 ToList(); RemoveAt(长度 - 1); ToArray()
    • 应该这样做:americanCulture.DateTimeFormat.MonthNames.Take(12)
    • +1 也可以获得更好的解决方案。我对原始和您的解决方案进行了 100000 次迭代。 00:02.59 - 原始解决方案 00:02.03 - Jose Basilio 的解决方案。
    【解决方案2】:

    CultureInfo 具有DateTimeFormat 属性,其中包含有关日期时间格式的信息。从那里您可以使用GetMonthNameGetAbbreviatedMonthName。或者,您可以通过 DateTimeFormatInfo 的 MonthNames 属性获取月份名称数组。

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 1970-01-01
      • 2016-03-25
      • 2013-06-22
      • 2011-11-20
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多