我在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 。 请帮助找到适用于所有日期格式的解决方案。
答案 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;
}