c#中的时间验证

时间:2011-07-28 02:06:39

标签: c# .net validation date time

我们有一个通用搜索文本框,用户可以搜索任何内容。我需要验证DateTime,特别是时间部分和用户可以输入任何东西
docdate eq 1/1/2000 33:28:00
docdate eq 1/1/2000 13:28 am
在上面的查询中,我需要验证日期部分,知道列docdate是有效日期。 什么是实现这一目标的最佳方式。

3 个答案:

答案 0 :(得分:2)

听起来像DateTime.TryParse就是你想要的。

它将尝试解析日期(如果有效则返回true,否则返回false),如果成功则提供System.DateTime值。 其中一个重载允许您指定您想要支持的特定格式。

TryParse方法比字符串解析/正则表达式更可取,因为它:

  • 处理各种日期/时间规则(每月的天数,闰年等)和多种文化的格式
  • 支持可由System.DateTime对象
  • 表示的所有日期/时间值
  • 为有效日期提供System.DateTime对象,您可能需要在代码的其他位置

答案 1 :(得分:2)

您可以像这样使用DateTime.TryParse来转换军事时间。

DateTime parsedDate;
DateTime.TryParseExact("1/1/2000 3:28:00", "M/d/yyyy H:mm", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out d);

使用格式字符串(第二个参数)来测试各种可能的格式(例如:有和没有am / pm,有和没有毫秒......)

答案 2 :(得分:0)

您可以使用RegularValidation。您可以从here

中找到合适的表达式
(?n:^(?=\d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1\d|2[0-8])(?<sep>[/.-])(?<month>0?[1-9]|1[012])\2(?<year>(1[6-9]|[2-9]\d)\d{2})(?:(?=\x20\d)\x20|$))?(?<time>((0?[1-9]|1[012])(:[0-5]\d){0,2}(?i:\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$)