VB.Net Date.ParseExact文化问题
我正在使用vb.net,我使用以下函数创建了一个月列表(3个字符表示)VB.Net Date.ParseExact文化问题,vb.net,Vb.net,我正在使用vb.net,我使用以下函数创建了一个月列表(3个字符表示) Public Function getMonths() As Array Dim months As String = "" For i = 1 To 12 months += StrConv(MonthName(i, True), VbStrConv.ProperCase) + "," Next months = months.Substring(0, months.Leng
Public Function getMonths() As Array
Dim months As String = ""
For i = 1 To 12
months += StrConv(MonthName(i, True), VbStrConv.ProperCase) + ","
Next
months = months.Substring(0, months.Length - 1)
getMonths = months.Split(",")
End Function
这工作得很漂亮,因为我正在建设的网站可以随时改变语言等
但是,当我尝试将月份更改回数值以使用此函数进行处理时
Public Function monthToNumber(ByVal monthin As String, ByVal culture As System.Globalization.CultureInfo) As Integer
monthToNumber = DateTime.ParseExact("01/" + monthin + "/1999", "dd/MMM/yyyy", culture).Month
End Function
,date.ParseExact抛出日期输入异常,该异常不在有效字符串中
这个月是由文化生产的,所以我不能理解失败。这只发生在{pt}的文化中。该过程适用于西班牙、英国、法国和意大利。如果使用
DateTime.ParseExact
,则必须使用正确的
对于pt
,它不是/
,而是-
/
可以作为默认值日期分隔符
,但仅当您使用CultureInfo.InvariantCulture
时。但是如果你这样做了,你就不能解析特定于文化的日期缩写
这就是你的代码失败的原因
生成月份缩写,简单使用或;不需要自己编写方法 此外,你还应该研究(另一件你不必重新发明的事情) 为了重新解析字符串,可以使用
monthToNumber = DateTime.ParseExact(monthin, "MMM", culture).Month
如果您只需对格式字符串使用MMM
,则不需要天/年