我正在以下列方式使用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方法的屏幕截图:
答案 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 !
}