Преобразование имени месяца в целое число
Я быстро поискал это и был удивлен, не найдя его нигде.
В основном ищет конвертировать полные месячные имена (январь, сентябрь и т.д.) в эквивалентное число, которое будет использоваться в формате mm/dd/yyyy.
Я могу собрать свой собственный массив и вытащить его соответствующим образом, но должен быть быстрый и простой метод. Правильно?
Ответы
Ответ 1
Вы можете использовать строку формата MMMM
для полного имени месяца.
См. пользовательские строки формата DateTime в MSDN.
Dim fullMonthName as DateTime
fullMonthName = DateTime.ParseExact("26 January 2010", "dd MMMM yyyy",
CultureInfo.InvariantCulture)
Ответ 2
Dim monthName = "September"
Dim monthNumber = DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month
Если вы основываете это на вводе пользователя, я думаю, что это самый чистый (особенно если вы ожидаете, что несколько культур используют это). DateTime.ParseExact
позволит вам вводить любые входные данные и переводить их в DateTime
, а затем отрывать любую часть, о которой вы заботитесь.
Если, однако, это не относится к пользовательскому вводу, я бы предложил использовать какую-то статическую коллекцию (будь то словарь или перечисление).
Ответ 3
Назовите меня сумасшедшим, но разве это не означает, что перечислить? Возможно, стоит подумать о том, чтобы код был как можно более простым. http://visualbasic.about.com/od/usingvbnet/a/enum01.htm
Ответ 4
В моем случае я использовал этот трюк
- Создать 2 combobox
- материал combobox1 с именами месяцев
- материал combobox2 с годами
а затем этот
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
MsgBox(System.DateTime.DaysInMonth(ComboBox2.Text, ComboBox1.SelectedIndex + 1), MsgBoxStyle.Information)
End Sub
Ответ 5
Это может звучать долгое время, почему бы не использовать инструкцию IF или Select Case.
If Month = "January" Then MonthNum = "1"
Else If Month = "February" Then .......