设置日期和时间根据文化,将正则表达式表达为RegularExpressionValidator

时间:2014-08-05 05:30:29

标签: c# asp.net regex cultureinfo culture

我正面临验证日期和问题的问题。根据当地文化的时间。

这是我的RegularExpressionValidator

  <asp:RegularExpressionValidator
       ID="regTime"
       ControlToValidate="txtTime"
       Display="Dynamic"
       Text="Invalid Time Format"
       ValidationExpression="^((1[012])|(0?[1-9])):([0-5][0-9]) ?([aApP][mM])$"
       runat="server">
 </asp:RegularExpressionValidator>

以上验证者验证了文化的时间。

现在我正在开发一个需要能够处理每种文化的日期和时间格式的应用程序,我想要一个如何验证日期和时间的具体解决方案。时间取决于使用RegularExpression的文化。

例如,美国时间格式为h:mm tt(01:20 PM)&amp;德国时间格式为HH:mm(13:20)。

1 个答案:

答案 0 :(得分:1)

很抱歉,这让我想起了热门话题:

  

有些人在面对问题时会想到,我知道,我会使用   正则表达式。&#34;现在他们有两个问题。

无论如何,你不需要正则表达式。 .NET的DateTime和CultureInfo最适合解决这个问题。创建自己的自定义验证器,执行以下操作:

var usCulture = new CultureInfo("en-us");
DateTime.ParseExact("3:20 PM", usCulture.DateTimeFormat.ShortTimePattern, usCulture);

var germanCulture = new CultureInfo("de");
DateTime.ParseExact("13:20", germanCulture.DateTimeFormat.ShortTimePattern, germanCulture);

如果您想要返回值而不是例外,请使用DateTime.TryParseExact