2014-01-23 129 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:我編輯了我的答案以提供另一種方法。 –