.net 在isDate()或Datetime.TryParse中指定CultureInfo
我需要确定字符串是否是格式为.net 在isDate()或Datetime.TryParse中指定CultureInfo,.net,vb.net,date,date-format,cultureinfo,.net,Vb.net,Date,Date Format,Cultureinfo,我需要确定字符串是否是格式为dd.mm.yyyy的日期 但是,应用程序运行在具有不同语言设置的系统上。因此,在“有效”字符串上使用isDate或TryParse在德语系统上返回true(因为这些函数使用CultureInfo.CurrentCulture),在具有英语系统设置的系统上返回false 是否有函数检查字符串是否是指定CultureInfo的有效日期 当然,我总是可以使用regex来验证这一点,但我无法想象这是必要的。似乎我错过了TryParse方法的重载: Dim myculture
dd.mm.yyyy
的日期
但是,应用程序运行在具有不同语言设置的系统上。因此,在“有效”字符串上使用isDate
或TryParse
在德语系统上返回true(因为这些函数使用CultureInfo.CurrentCulture
),在具有英语系统设置的系统上返回false
是否有函数检查字符串是否是指定CultureInfo的有效日期
当然,我总是可以使用regex来验证这一点,但我无法想象这是必要的。似乎我错过了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
很好用。(有关详细信息,请参阅)如果您知道字符串的格式,并且该格式不会更改,则应使用
DateTime.TryParseExact
使用不变量区域性
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
你需要使用不变量文化,否则这不会像你期望的那样起作用。我认为我理解错了,因为不变量文化依赖于英语,不是吗?因此,我不能通过不变量文化,仍然得到想要的结果?不过,上面的代码只是我提供的链接中的一个通用示例。在我的应用程序中,我传递了一个专用的CultureInfo对象,该对象在多个地方使用。不,不变的区域性本质上没有特定的区域性或语言。你真的想按照@MattWilko的回答来做。首先,因为不变的文化事物;但这也是因为
TryParse
往往比TryParseExact
慢几个数量级——有关详细信息,请参阅。