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" };