2015-04-01 64 views
0

我使用jQuery的datepicker部件以下列方式(在我母版頁):TryParseExact()方法不解析來自jQuery的日期選擇器選擇日期

<script> 
    $(".datepicker").datepicker({ 
        showAnim: 'fadeIn', 
        minDate: 0, 
        maxDate: "3M", 
        dateFormat: "dd-mm-yy"      
       }); 
</script> 

我有一個asp:Repeater控制在我的內容頁面。在C#代碼中(我的內容頁面),我使用DateTime.TryParseExact方法從中繼控制器獲取日期並以如下方式解析它:

for (int i = 0; i < rptr.Items.Count; i++) 
{ 
.... 
...//find other controls 
... 
     TextBox txtDate = (TextBox)rptr.Items[i].FindControl("txtServiceDate"); 

    DateTime eventDate = new DateTime(); 

      if (txtDate.Text != null) 
      { 
       if (DateTime.TryParseExact(txtDate.Text, "dd-mm-yy", null, System.Globalization.DateTimeStyles.None, out eventDate)) 
       { 
        cartObj.ServiceDate = eventDate; //code doesn't go here 
       } 
       else 
       { 
        cartObj.ServiceDate = DateTime.Now; //code reaches here!which means parsing failed 
       } 
      } 
      else 
      { 
       cartObj.ServiceDate = DateTime.Now; 
      } 
... 
.... 

...//other code 
} 

正如您在datepicker()中看到的,即使指定的格式相同,我也指定日期格式爲dd-mm-yy', but this date doesn't get formatted in my TrParseExact()`方法。

什麼可能是錯的?

編輯: 我已經添加了什麼進入TryParseExact方法在調試模式下的截圖:

enter image description here

+0

'mm'意味着.NET自定義格式字符串的分鐘數,而不是幾個月......(我還*強烈*建議使用yyyy而不是yy ...並且理想情況下是yyyy-MM-dd而不是其他方式圓......這就是ISO-8601格式。) – 2015-04-01 04:50:37

+0

@JonSkeet:我使用的是'yyyy-MM-dd'格式。但是這也沒有得到解析,我想我不能在'datepicker()'中使用相同的格式,因爲它不會生成所需的日期格式。 – 2015-04-01 04:57:12

+0

那麼通過給出一個無法解析的值的示例並將其硬編碼成一個簡短但完整的程序來演示問題,從而剪掉了jQuery部分。 – 2015-04-01 04:57:53

回答

0

一切歸功於@喬恩飛碟雙向。在TryParseExact()方法中,我將null作爲值傳遞給IFormatProvider。傳遞其中的文化信息,做了魔術。

我將IFormatProvider的值更改爲位於System.Globalization名稱空間中的CultureInfo.InvariantCulture

當你不知道時間提前CultureInfo.InvariantCulture屬性時,什麼文化格式的日期和十進制/貨幣值將在

以下是我現在使用的方法:

if (DateTime.TryParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture , System.Globalization.DateTimeStyles.None, out eventDate)) 
    { 
     //date parsed successfully . Do something with it ! 
    } 
0

在C#中一個完整的參考,意味着毫米分鐘。嘗試使用MM,如:

if (DateTime.TryParseExact(txtDate.Text, "dd-MM-yy", etc etc etc 
+0

不起作用! :/ – 2015-04-01 05:05:38

相關問題