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

时间:2013-08-21 06:30:12

标签: 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.TryParseExact("2013.03.12", format, 
             new CultureInfo("de-DE"), DateTimeStyles.None, out parsed);

2 个答案:

答案 0 :(得分:17)

我认为您当前的DateSeparator.(点),/会自动替换它。

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

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

查看The "/" Custom Format Specifier

答案 1 :(得分:7)

作为@SonerGönülpoints out/被视为custom format strings中的“日期分隔符”。如果您只想接受/个字符,则需要将它们转义:

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