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

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

在我将CultureInfo "de-De"更改为"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); 

我认为你现在的DateSeparator. (点)和/自动替换它。

/ seperator具有“ 用当前文化的日期分隔符替换我 ”的特殊含义

 CultureInfo c = new CultureInfo("de-DE"); Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot) 

看一下"/"自定义格式说明符

正如@SonerGönül所指出的那样 , /被视为自定义格式字符串中的 “日期分隔符”。 如果你只想接受/字符,你需要逃避它们:

 var format = new string[] { @"yyyy\/MM\/dd" };