2009-04-26 2 views
4

я должен заполнить выпадающий с месяцем на английском языке: январь, февраль и т.д. я сделал это следующим способом:Заливка выпадающий с английскими месяцами

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); 

Как вы думаете, какой образ лучше (Perfomance)?

Есть ли способ конвертировать целое число, обозначающее номер месяца, к его имени?

ответ

18

CultureInfo уже содержит список имен месяцев в рамках. Вы могли бы просто написать:

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

+1 для использования описательного имени переменной, чтобы код «самодокументировался»! –

+0

Спасибо! Как вы думаете, какой лучший способ удалить последний пустой элемент в этом массиве? Я нашел только ToList(); RemoveAt (длина - 1); ToArray() – abatishchev

+1

Это должно сделать это: americanCulture.DateTimeFormat.MonthNames.Take (12) –

2

CultureInfo имеет DateTimeFormat свойство, которое содержит информацию о времени, дате форматирования. Оттуда вы можете использовать GetMonthName или GetAbbreviatedMonthName. Или, альтернативно, вы можете получить массив имен месяцев через свойство MonthNames объекта DateTimeFormatInfo.