以下代码块中的方法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);
答案 0 :(得分:17)
我认为您当前的DateSeparator
是.
(点),/
会自动替换它。
/
分隔符具有“将我替换为当前文化的日期分隔符”的特殊含义
CultureInfo c = new CultureInfo("de-DE");
Console.WriteLine(c.DateTimeFormat.DateSeparator); //Prints . (dot)
答案 1 :(得分:7)
作为@SonerGönülpoints out,/
被视为custom format strings中的“日期分隔符”。如果您只想接受/
个字符,则需要将它们转义:
var format = new string[] { @"yyyy\/MM\/dd" };