C#-System.FormatException:System.DateTime处的格式字符串无效

C#-System.FormatException:System.DateTime处的格式字符串无效,c#,C#,我正在比较日期格式,它在dd-MM-yyyy输入中运行良好,但在dd/MM/yyyy中抛出异常 我的代码: string s = Console.ReadLine(); DateTime d = DateTime.ParseExact(s, "dd-MM-yyyy", CultureInfo.InvariantCulture); string h = d.ToString("dd-MM-yyyy"); if (h.Equals(s)) { Console.WriteLine("Valid

我正在比较日期格式,它在
dd-MM-yyyy
输入中运行良好,但在
dd/MM/yyyy
中抛出异常

我的代码:

string s = Console.ReadLine();
DateTime d = DateTime.ParseExact(s, "dd-MM-yyyy", CultureInfo.InvariantCulture);
string h = d.ToString("dd-MM-yyyy");
if (h.Equals(s))
{
    Console.WriteLine("Valid");
}
else
{
    Console.WriteLine("Invalid");
}

您已指定,
DateTime.ParseExact
只需要
“dd-MM-yyyy”
格式的日期。解析任何其他格式的日期字符串将引发FormatException,如中所指定:

当s不包含以下日期和时间时,将引发FormatException 对应于格式中指定的模式

如果希望支持多种格式,则应提供所有格式。这可能与接受格式数组的重载有关:

 var formats = new [] {"dd-MM-yyyy", "dd/MM/yyyy" };
 var d = DateTime.ParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)

您已指定,
DateTime.ParseExact
只需要
“dd-MM-yyyy”
格式的日期。解析任何其他格式的日期字符串将引发FormatException,如中所指定:

当s不包含以下日期和时间时,将引发FormatException 对应于格式中指定的模式

如果希望支持多种格式,则应提供所有格式。这可能与接受格式数组的重载有关:

 var formats = new [] {"dd-MM-yyyy", "dd/MM/yyyy" };
 var d = DateTime.ParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None)

您能澄清一下为什么希望名为
ParseExact
的方法接受不完全匹配的字符串吗?你期望的结果是什么?到目前为止,还不清楚阅读文档后为什么会有这种期望。您是否考虑过使用
DateTime.TryParse(datestring,out-dateOut)
?它将接受格式为
dd/mm/yyyyy
dd-mm-yyyy
yyyy/mm/dd
的字符串,甚至
2017年6月1日
@Alexei刚刚计算出来,先生。我是我的错是我不知道ParseExact做什么!现在我明白了。谢谢。@JohnG先生,是的,我已经试过了,并且得到了我的答案。谢谢。您能澄清一下为什么希望名为
ParseExact
的方法接受不完全匹配的字符串吗?你期望的结果是什么?到目前为止,还不清楚阅读文档后为什么会有这种期望。您是否考虑过使用
DateTime.TryParse(datestring,out-dateOut)
?它将接受格式为
dd/mm/yyyyy
dd-mm-yyyy
yyyy/mm/dd
的字符串,甚至
2017年6月1日
@Alexei刚刚计算出来,先生。我是我的错是我不知道ParseExact做什么!现在我明白了。谢谢。@JohnG先生,是的,我已经试过了,并且得到了我的答案。谢谢,先生,这对我很有效。我只传递了一种格式是错误的。谢谢你,先生,这真的很有帮助。谢谢你,先生,这对我很有效。我只传递了一种格式是错误的。谢谢你,先生,这真的很有帮助。