1

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

这是我的代码:

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();
   }
4

2 回答 2

5

19/7/2013无法使用MM/dd/yyyy格式解析,因为19它不是有效的月份。
您可能想dd/MM/yyyy改用。

于 2013-07-11T03:26:26.487 回答
0

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

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");

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

if (lblMsg.Text == "dd/MM/yyyy")
 usinfo.BDate = DateTime.ParseExact(txtDOB.Text.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);
else
usinfo.BDate = DateTime.ParseExact(txtDOB.Text.ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture);

lblMsg.Text = "";
于 2015-10-22T11:57:32.340 回答