在isDate()或Datetime.TryParse中指定CultureInfo

时间:2014-11-26 12:33:08

标签: .net vb.net date date-format cultureinfo

我需要确定字符串是否为dd.mm.yyyy格式的日期。

但是,应用程序在具有不同语言设置的系统上运行。因此,在'有效'字符串上使用isDateTryParse会在德语系统上返回true(因为这些函数使用CultureInfo.CurrentCulture)并在具有英语系统设置的系统上返回false。

是否有一个函数检查字符串是否是指定CultureInfo的有效日期?

当然我总是可以使用正则表达式来验证这一点,但我无法想象这是必要的。

2 个答案:

答案 0 :(得分:2)

如果你知道字符串的格式并且这不会改变,你应该使用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

答案 1 :(得分:-1)

好像我错过了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+