【发布时间】:2017-08-14 09:21:25
【问题描述】:
我正在阅读 .csv 文件,其中字符串值具有本机 (авг=aug) 月份名称 (datestring):“01-авг-17 00:00:00”,但不是“авг”,而是正确的本地月份用我的母语命名。使用以下代码我试图将其转换为日期时间格式,但它不起作用:
Public Shared Function GetDateTime(ByVal datestring As String) As Date
Dim format As String = {"dd-MMM-yy HH:mm:ss"}
Dim result As Date
If Date.TryParseExact(datestring, format, CultureInfo.InvariantCulture, Nothing, result) Then
Return result.ToString
Else
MsgBox(datestring & " is not in the correct format")
Return Nothing
End If
End Function
由于某些原因,程序转到“else”语句。如果我使用英语等效的“aug”,它可以正常工作。我怎么解决这个问题?我试图使用类似 "CultureInfo.CreateSpecificCulture("ru-RU") 的东西,但它没有用。
更新
我希望能够使用不同的 csv 文件,其中可以包含不同语言(eng 或 ru)的月份名称。所以我明白我可以使用以下语句(俄语):
Date.TryParseExact(datestring, formats, New CultureInfo("ru-RU"), DateTimeStyles.None, result)
所以对于英语,我需要使用New CultureInfo("en-US") 之类的东西。但是,为什么CultureInfo.InvariantCulture 不起作用?我可以使用几个 if 条件来应用不同的文化设置。你知道“智能”解决方案吗?如何轻松转换英文或俄文的月份名称?
【问题讨论】:
-
从屏幕截图看问题可能是 .csv 编码
-
我从 Ansi 改成了 Unicode,显示没有问号,谢谢,但问题还是没有解决。
-
删除“格式”字符串定义中的大括号有帮助吗?
-
不,实际上我使用了大量的字符串,但为了更简单,我删除了所有不必要的字符串格式。
-
@badscrool 你在改版后尝试过俄罗斯文化吗?