2014-01-23 91 views
0

我加入以下的aspx页面比较不同的日期格式日期“CompareValidator”

<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,但是当我将PC的日期格式更改为dd-MMM-yyyyyy-mm-dd时会出错。 请帮助寻找适用于所有日期格式的解决方案。

+0

你可以使用:'DateTime.Today.ToString( “MM/DD/YYYY”,CultureInfo.InvariantCulture);'迫使这种格式。 –

+0

@TimSchmelter,但我想普遍的代码将适用于任何日期格式。我用DateTime.Today.ToString(“dd-MM-yyyy”,CultureInfo.InvariantCulture)试过这段代码;但无用 – Jignesh

+0

您可以更改线程文化。 请参阅http://stackoverflow.com/questions/6654695/is-there-a-culture-safe-way-to-get-toshortdatestring-and-toshorttimestring- w为一个工作答案。 – drw85

回答

0

而不是

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

你可以使用

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

迫使该CompareValidator理解的格式。

,或者你可以通过改变这个页面的文化页面指令:

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

的任意日期格式另一种选择是改变其使用的CompareValidator了短路电流文化​​ShortDatePatern。你可以在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; 
} 
+0

它给出错误“'CmpStartdateVal'的ValueToCompare属性值'01/23/2014'无法转换为类型'Date'。” 编辑:我的电脑的格式是dd-MMM-yy – Jignesh

+0

@ user3201354:我编辑了我的答案以提供另一种方法。 –