Как перечислить все названия месяцев, например, для комбо? - PullRequest
65 голосов
/ 24 ноября 2008

В данный момент я создаю DateTime для каждого месяца и форматирую его, чтобы включить только месяц.
Есть ли другой или лучший способ сделать это?

Ответы [ 14 ]

0 голосов
/ 21 октября 2018

Как создать произвольный список названий месяцев в любом порядке

Да, я отвечаю на вопрос более 10 лет назад! : D

Тем не менее, я хотел добавить этот фрагмент кода на случай, если он может помочь другим. Он показывает, как вывести список названий месяцев в произвольном порядке. В моем случае мне нужно, чтобы это началось в октябре, но вы можете поместить месяцы в любой последовательности (даже с повторяющимися месяцами), установив список целых чисел.

model.Controls = new
{
    FiscalMonths = new
    {
        Value = DateTime.Now.Month,
        Options = (new List<int> { 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9 }).Select(p => new
        {
            Value = p,
            Text = DateTimeFormatInfo.CurrentInfo.GetMonthName(p)
        })
    }
};

И вывод json для использования в раскрывающемся списке:

  "FiscalMonths": {
   "Value": 10,
   "Options": [
    {
     "Value": 10,
     "Text": "October"
    },
    {
     "Value": 11,
     "Text": "November"
    },
    {
     "Value": 12,
     "Text": "December"
    },
    {
     "Value": 1,
     "Text": "January"
    },
    {
     "Value": 2,
     "Text": "February"
    },
    etc ....
0 голосов
/ 03 июня 2014

Вот хороший пример заполнения выпадающего списка формой «Месяцы для кредитной карты»:

    Dim currentCulture As CultureInfo = CultureInfo.CurrentUICulture
    Dim monthName, monthNumber As String

    For x As Integer = 0 To 11
        monthNumber = (x + 1).ToString("D2")
        monthName = currentCulture.DateTimeFormat.MonthNames(x)
        Dim month As New ListItem(String.Format("{0} - {1}", monthNumber, monthName),
                                  x.ToString("D2"))
        ddl_expirymonth.Items.Add(month)
    Next

Создает следующие локализованные для текущего языка, например:

01 - January
02 - February
etc.
0 голосов
/ 22 апреля 2014
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;
0 голосов
/ 06 февраля 2013
List<string> mnt = new List<string>();    
int monthCount = Convert.ToInt32(cbYear.Text) == DateTime.Now.Year ? DateTime.Now.Month : 12;    
            for (int i = 0; i < monthCount; i++)    
            {    
                mnt.Add(CultureInfo.CurrentUICulture.DateTimeFormat.MonthNames[i]);    
            }    
            cbMonth.DataSource = mnt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...