将月份名称转换为整数

时间:2010-09-07 20:09:54

标签: vb.net datetime date integer

我快速搜索了这个,并且惊讶地发现它无处可寻。

基本上希望将完整月份名称(1月,9月等)转换为以mm / dd / yyyy格式使用的等效数字。

我可以将自己的数组放在一起并相应地将其拉出来,但必须有一个快速而直接的方法。正确?

6 个答案:

答案 0 :(得分:21)

Dim monthName = "September"
Dim monthNumber = DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month

如果你基于用户输入,我认为这是最干净的(特别是如果你期望多种文化使用它)。 DateTime.ParseExact允许您输入任何类型的输入并将其转换为DateTime,然后选择您关注的任何部分。

但是,如果这不是用户输入,我将不得不建议使用某种静态集合(无论是字典还是枚举)。

答案 1 :(得分:16)

您可以使用格式字符串MMMM作为月份的全名。

请参阅MSDN上的custom DateTime format strings

Dim fullMonthName as DateTime
fullMonthName = DateTime.ParseExact("26 January 2010", "dd MMMM yyyy", 
                                           CultureInfo.InvariantCulture)

答案 2 :(得分:1)

这很旧,但是我一直在寻找,以防万一有人来找我,我想出了一个简单的解决方案。...

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

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

iM等于6

答案 3 :(得分:0)

叫我疯了,但这不就是枚举的意思吗?也许值得考虑保持代码尽可能简单。 http://visualbasic.about.com/od/usingvbnet/a/enum01.htm

答案 4 :(得分:0)

在我的情况下,我使用了这个技巧

  1. 创建2个组合框
  2. 填充名称为几个月的combobox1
  3. 使用多年的combobox2
  4. 然后这个

        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 :(得分:-2)

这可能听起来很长,为什么不使用IF声明或精选案例。

If Month = "January" Then MonthNum = "1"
Else If Month = "February" Then .......