我正在努力找出如何最好地处理我可能作为输入的不同日期格式。具体情况是关于日期dd/MM/yyyy和MM/dd/yyyy。
当时我尝试将日期转换如下:
firstDate=CDate("10/22/1988"(
它显然返回了一个错误,我如何以通用的方式处理这两种情况?
您可以将Date.TryParseExact
与允许的格式模式一起使用:
Dim patterns As String() = {"dd/MM/yyyy", "MM/dd/yyyy"}
Dim dt As Date
Dim valid = Date.TryParseExact(str, patterns, CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
这里有一个完整的工作演示:
Sub Main
Dim inputs As String() = {"10/22/1988", "22/10/1988"}
Dim patterns As String() = {"dd/MM/yyyy", "MM/dd/yyyy"}
For Each str As String In inputs
Dim dt As Date
Dim valid = Date.TryParseExact(str, patterns, CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
Console.WriteLine($"Valid: {valid} Date-Value: {dt}")
Next
End Sub
输出(我在德国(:
Valid: True Date-Value: 22.10.1988 00:00:00
Valid: True Date-Value: 22.10.1988 00:00:00
在输入类似"0"的情况下;1988年3月5日";您还应该允许:
"M/d/yyyy", "d/M/yyyy"
在这种情况下,顺序也是优先级,所以如果两者都能起作用,第一个获胜。