在我的应用程序中,用户可以通过在文本框中输入日期来指定日期模式。此模式用于记录消息。例如,如果用户指定'dd-MM',那么在日志文件中他可以看到以下内容:
[12-06] Some message...
[02-09] Some message 2...
如何验证此模式?如何保护输入错误的模式?
答案 0 :(得分:3)
最简单的方法是尝试解析日期。
DateTime someDate;
// Valid will be false if it could not parse the date
bool valid = DateTime.TryParse(yourFormat, out someDate);
答案 1 :(得分:0)
正则表达式可能是一个不错的选择。
答案 2 :(得分:0)
您可以在此Regular Expressions
查看question或其他内容答案 3 :(得分:0)
这是一个难题。我试过了:
try
{
DateTime.Now.ToString(tmpFormatSpec);
}
catch (Exception)
{
// the format spec is known to be bad
}
问题是日期格式模式非常灵活。即使是不提供日期信息的内容也是允许的(我的示例代码无法检测到这些内容):
DateTime.Now.ToString("bla"); // no exception raised
请参阅此other SO post以获得更好的方法(我还没有尝试过)。
另见J. Skeet的评论,关于这个问题的讨论。
答案 4 :(得分:0)
这是一个难题。我试过了:
{{1}}
问题是日期格式模式非常灵活。即使是不提供日期信息的内容也是允许的(我的示例代码无法检测到这些内容):
{{1}}
请参阅此other SO post以获得更好的方法(我还没有尝试过)。
另见J. discussion关于这个问题,以及J. Skeet的评论。