Преобразование названия месяца в целое число - PullRequest
12 голосов
/ 08 сентября 2010

Я сделал быстрый поиск этого и был удивлен, что нигде не нашел его.

В основном пытаясь преобразовать полные названия месяцев (январь, сентябрь и т. Д.) В эквивалентное число, которое будет использоваться в мм /формат дд / гггг.

Я могу собрать свой собственный массив и извлечь его соответствующим образом, но уже должен быть быстрый и простой метод.Правильно?

Ответы [ 6 ]

22 голосов
/ 08 сентября 2010
Dim monthName = "September"
Dim monthNumber = DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month

Если вы основываете это на пользовательском вводе, я думаю, что он самый чистый (особенно, если вы ожидаете, что несколько культур будут использовать это). DateTime.ParseExact позволит вам ввести любой тип ввода и преобразовать его в DateTime, а затем извлечь любую часть, которая вас интересует.

Если, однако, это не относится к пользовательскому вводу, я бы предложил использовать какую-то статическую коллекцию (словарь или перечисление).

17 голосов
/ 08 сентября 2010

Вы можете использовать строку формата MMMM для полного названия месяца.

См. пользовательские строки формата DateTime в MSDN.

Dim fullMonthName as DateTime
fullMonthName = DateTime.ParseExact("26 January 2010", "dd MMMM yyyy", 
                                           CultureInfo.InvariantCulture)
1 голос
/ 11 июля 2018

Это старый, но что-то, что я искал, просто если кто-то еще придет, я придумаю простое решение ....

Dim sM as String = "Jun"
Dim iM as Byte = 0

iM = Month(sM & " 1, 2020")

iM будет равно 6

0 голосов
/ 29 декабря 2016

ну в моем случае я использовал этот трюк

  1. Создать 2 комбинированного списка
  2. материал combobox1 с названиями месяцев
  3. материал 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
0 голосов
/ 08 сентября 2010

Это может показаться многословным, почему бы не использовать оператор IF или Select Case.

If Month = "January" Then MonthNum = "1"
Else If Month = "February" Then .......
0 голосов
/ 08 сентября 2010

Назовите меня сумасшедшим, но разве это не то, для чего нужен enum?Возможно, стоит подумать о том, чтобы сохранить код как можно более простым.http://visualbasic.about.com/od/usingvbnet/a/enum01.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...