日历System.Globalization.GregorianCalendar中不支持字符串表示的DateTime。

时间:2013-07-11 03:04:28

标签: asp.net

我在12日之后的日期之后检索日期时遇到问题。例如:如果我从calander extender点击:2013年2月7日到2013年7月19日,将会抛出这个错误:日历System.Globalization.GregorianCalendar中不支持字符串表示的DateTime。

这是我的代码:

var format = "MM/dd/yyyy";
    DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
    DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);



    if (two >= one)
    {
        SqlConnection conn = new SqlConnection("Data Source=""catalog="";Integrated Security=True");
        conn.Open();
        SqlCommand cmd = new SqlCommand("SELECT Name,CLass, NRIC, StallNo, AmountSpent ,TimeDate=convert(nvarchar,timedate,103)  FROM StudentTransactions WHERE TimeDate BETWEEN '" + one + "' AND '" + two + "'", conn);
        SqlDataReader reader = cmd.ExecuteReader();
        GridView1.DataSource = reader;
        GridView1.DataSourceID = null;
        GridView1.Visible = true;
        GridView1.DataBind(); 
        conn.Close();
   }

2 个答案:

答案 0 :(得分:5)

无法使用19/7/2013格式解析

MM/dd/yyyy,因为19不是有效月份。
您可能希望改为使用dd/MM/yyyy

答案 1 :(得分:0)

当您想要在标签或文本框中显示日期格式并在数据库中添加更新时,本地和服务器上的日期时间格式会多次不同。经过长时间的疲劳我得到了这个解决方案 首先检查下面的当前日期格式:

FOO=`echo "My great Text" ; true` ; echo $?

添加或更新:同样,您可以检查当前日期格式是dd / MM / yyyy还是“MM / dd / yyyy”

lblMsg.Text = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;  
if (lblMsg.Text == "dd/MM/yyyy")  
  txtd.Text = DateTime.Parse(dr["EventDate"].ToString()).ToString("dd/MM/yyyy");  
else  
  txtd.Text = DateTime.Parse(dr["EventDate"].ToString()).ToString("MM/dd/yyyy");