TryParseExact()方法不解析从jQuery的datepicker中选择的日期

时间:2015-04-01 04:49:25

标签: c# jquery asp.net datepicker

我正在以下列方式使用jQuery的 datepicker 小部件(在我的母版页中):

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

我的内容页中有asp:Repeater控件。在C#代码(我的内容页面)中,我使用{{1} }方法从转发器控件获取日期并按以下方式解析它:

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() TrParseExact()`方法,即使sepcified格式是相同的。

可能出现什么问题?

修改 我已经在调试模式中添加了TryParseExact方法的屏幕截图:

enter image description here

3 个答案:

答案 0 :(得分:1)

您正尝试按如下方式设置日期格式:

dd-mm-yy

[day]-[minute]-[year]

在.NET中,月份表示为MM

您可以在此处找到所有日期字符串表示的完整参考 https://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx

答案 1 :(得分:0)

在C#中,mm表示分钟。尝试使用MM,如:

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

答案 2 :(得分:0)

所有功劳归于 @Jon Skeet 。在TryParseExact()方法中,我将null作为值传递给IFormatProvider。传递文化信息,做了神奇的事。

我将IFormatProvider的值更改为CultureInfo.InvariantCulture命名空间中的System.Globalization

如果您不确定提前确定日期和小数/货币值的文化格式,则会使用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 !
   }