我们有一个通用搜索文本框,用户可以搜索任何内容。我需要验证DateTime,特别是时间部分和用户可以输入任何东西
docdate eq 1/1/2000 33:28:00
docdate eq 1/1/2000 13:28 am
在上面的查询中,我需要验证日期部分,知道列docdate是有效日期。
什么是实现这一目标的最佳方式。
答案 0 :(得分:2)
听起来像DateTime.TryParse就是你想要的。
它将尝试解析日期(如果有效则返回true,否则返回false),如果成功则提供System.DateTime值。 其中一个重载允许您指定您想要支持的特定格式。
TryParse方法比字符串解析/正则表达式更可取,因为它:
答案 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})?$)