TryParseExact返回false,但我不知道为什么

Nig*_*iri 10 .net c# string datetime datetime-parsing

TryParseExact下面的代码块中的方法 返回true.
我想知道为什么.
我认为这个日期"2013.03.12"是无效的,因为它没有用斜线分隔,而是用点分隔.

在我更改了CultureInfo "de-De"to之后"en-US",该方法返回false.这可能是一个提示,但我仍然不知道为什么会发生这种情况.

var format = new string[] { "yyyy/MM/dd" };
var parsed = new DateTime();
var result = DateTime.TryParseExact("2013.03.12", format, 
             new CultureInfo("de-DE"), DateTimeStyles.None, out parsed);
Run Code Online (Sandbox Code Playgroud)

Son*_*nül 17

我认为你的当前DateSeparator.(点)并/自动替换它.

/分隔符具有"特殊意义与当前区域性的日期分隔符代替我 "

CultureInfo c = new CultureInfo("de-DE");
Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot)
Run Code Online (Sandbox Code Playgroud)

看看"/"自定义格式说明

  • 非常有趣,不知道 (3认同)

Dam*_*ver 7

正如@SonerGönül 指出的那样,它/被视为自定义格式字符串中的 "日期分隔符" .如果您只想接受/字符,则需要转义它们:

var format = new string[] { @"yyyy\/MM\/dd" };
Run Code Online (Sandbox Code Playgroud)

  • 一个@请在"之前" (3认同)