在我的应用程序中,用户可以通过在文本框中输入日期来指定日期模式。该模式用于记录消息。例如,如果用户指定“DD-MM”,然后在日志文件中,他可以看到以下内容:C#。日期模式验证
[12-06] Some message...
[02-09] Some message 2...
如何验证这种模式?如何保护输入错误的模式?
在我的应用程序中,用户可以通过在文本框中输入日期来指定日期模式。该模式用于记录消息。例如,如果用户指定“DD-MM”,然后在日志文件中,他可以看到以下内容:C#。日期模式验证
[12-06] Some message...
[02-09] Some message 2...
如何验证这种模式?如何保护输入错误的模式?
最简单的方法就是试着解析日期。
DateTime someDate;
// Valid will be false if it could not parse the date
bool valid = DateTime.TryParse(yourFormat, out someDate);
正则表达式可能是一个不错的选择。
您可以在Regular Expressions看一看,否则,在这个question
这是一个困难的问题。我试过了:
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的评论。
这是一个难题。我试过了:
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。
关于这个问题,请看这个discussion,由J. Skeet评论。
所以你知道这是约会。你想确保它符合日期模式? – Rake36 2010-06-21 12:42:46
如果是在一个月的开始,你将如何区分'dd-MM'和'MM-dd'之间的区别。或者今天可能有很多消息,所以应该是每分钟一次,所以它是'hh-mm'? – 2010-06-21 12:47:28
考虑ho1的评论以及你的问题。我建议你为用户提供一个选项列表,而不是解析输入的文本。 – 2010-06-21 12:58:01