C# TryParseExact返回false,尽管我没有';我不知道为什么

C# TryParseExact返回false,尽管我没有';我不知道为什么,c#,.net,string,datetime,datetime-parsing,C#,.net,String,Datetime,Datetime Parsing,下面代码块中的方法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.TryPar

下面代码块中的方法
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);
我认为您当前的状态是
(点),并且
/
会自动替换为它

/
分隔符具有“用当前区域性的日期分隔符替换我”的特殊含义

看看。

作为@Soner Gönül,
/
在中被视为“日期分隔符”。如果只接受
/
字符,则需要对其进行转义:

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

很有趣,我不知道that@lazyberezovsky是的,自从蒂姆·施梅尔特一个月前出现这种情况以来,我也没有意识到这一点。非常感谢。有时,我不必在本规范中按国家定义格式。“顺便说一句:
2013.03.12
之前的@please不是有效的/常用的德语日期格式。
12.03.2013
将是有效的。
var format = new string[] { @"yyyy\/MM\/dd" };