在“CompareValidator”的帮助下比较不同日期格式的日期

时间:2014-01-23 08:58:07

标签: c# asp.net validation datetime

我在aspx页面中添加了以下代码

<asp:CompareValidator ID="CmpStartdateVal" runat="server" ErrorMessage="Start date should be greater than Current date"
                Font-Size="Large" ControlToValidate="txtStartDate" EnableTheming="True"
                Operator="GreaterThan" ValidationGroup="Validation" Type="Date">*</asp:CompareValidator>

并在

后面的代码中添加了以下行
CmpStartdateVal.ValueToCompare = DateTime.Now.ToShortDateString();

如果我的电脑的日期格式为MM / dd / yyyy,它可以正常工作,但是当我将电脑的日期格式更改为 dd-MMM-yyyy 时会出错或 yy-mm-dd 。 请帮助找到适用于所有日期格式的解决方案。

1 个答案:

答案 0 :(得分:0)

而不是

CmpStartdateVal.ValueToCompare = DateTime.Now.ToShortDateString();

你可以使用

CmpStartdateVal.ValueToCompare = DateTime.Today.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);

强制CompareValidator理解的格式。

或者您可以通过page-directive更改此页面的文化:

<%@ Page .... Culture="en-US" UICulture="en-US" %>

任意日期格式的另一个选项是更改ShortDatePatern使用的当前文化的CompareValidator。您可以在Page_Init中执行此操作:

protected void Page_Init(object sender, EventArgs e)
{
    var culture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
    culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yy";
    System.Threading.Thread.CurrentThread.CurrentCulture = culture;
}