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先生,是的,我已经试过了,并且得到了我的答案。谢谢,先生,这对我很有效。我只传递了一种格式是错误的。谢谢你,先生,这真的很有帮助。谢谢你,先生,这对我很有效。我只传递了一种格式是错误的。谢谢你,先生,这真的很有帮助。