字符串到日期的转换 - .NET 不同的行为

Sam*_*eer 0 vb.net

请看下面的代码:

 Dim dtEstComplDate As Date
 Try
    dtEstComplDate = "08-mar-16"
 Catch ex As Exception
     MessageBox.Show(ex.Message)
 End Try
Run Code Online (Sandbox Code Playgroud)

如果我将计算机本地格式设置为英语(美国),'08-mar-16'则分配为dtEstComplDate现在#3/82016# ,如果我将计算机格式更改为意大利语,则此分配会导致以下异常:

“从字符串“08-mar-16”到类型“日期”的转换无效。”

我尝试使用08-mrz-16意大利设置。它不起作用。

Tim*_*ter 5

原因是这mar是英语中 March 的缩写,而不是意大利语中的缩写。

不要使用字符串来初始化日期。相反,你应该更改Option StrictOn. 然后,您将学到很多有关 .NET 方法和类型以及如何编写类型安全代码的知识。如果你想初始化一个 Date ,你可以使用构造函数:dtEstComplDate = New Date(2016, 3, 8)

如果您确实必须解析字符串才能Date使用Date.Parse/Date.TryParseDate.ParseExact/ Date.TryParseExact

dtEstComplDate = Date.ParseExact("08-mar-16", "dd-MMM-yy", DateTimeFormatInfo.InvariantInfo)
Run Code Online (Sandbox Code Playgroud)

我使用它是InvariantInfo因为它源自英语格式。