我需要识别字符串是否是dd.mm.yyyy格式的日期。
但是,应用程序运行在具有不同语言设置的系统上。因此,在“有效”字符串上使用isDate或TryParse,在德语系统上返回true (因为这些函数使用CultureInfo.CurrentCulture),并在带有英语系统设置的系统上返回false。
是否有一个函数可以检查字符串是否是指定CultureInfo的有效日期?
当然,我总是可以使用regex来验证这一点,但我无法想象这是必要的。
发布于 2014-11-26 12:56:24
如果您知道字符串的格式并且这不会改变,那么应该使用DateTime.TryParseExact使用InvariantCulture
Imports System.Globalization
Dim dateString As String = "31.12.1901"
Dim dateValue As Date
Dim dateFormat As String = "dd.MM.yyyy"
If DateTime.TryParseExact(dateString, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, dateValue) Then
'In the format expected
Else
'NOT in the format expected
End If发布于 2014-11-26 12:48:27
我似乎错过了TryParse方法的重载:
Dim myculture As New System.Globalization.CultureInfo("en-US")
myculture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"
myculture.DateTimeFormat.LongDatePattern = "dd/MM/yyyy"
If DateTime.TryParse("27/10/2010", myculture, Globalization.DateTimeStyles.None, New DateTime) Then
'Currect Date
End If效果很好。(详见http://forums.asp.net/t/1443698.aspx?in+ASP+NET+vb+IsDate+function+is+working+wrongly+ )
https://stackoverflow.com/questions/27149367
复制相似问题