1

我在 12 点之后的日期之后检索日期时遇到问题。例如:如果我从日历扩展器中单击:2/7/2013 到 19/july/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

3 回答 3

1

GridView如果您想从 CodeBehind中更改 a 列的格式,请将 a 添加RowDataBound到您的网格视图中。

然后在该GridView_RowDataBound(object sender, GridViewRowEventArgs e)方法中,您将能够访问 e ,这将使您可以访问该行的各个单元格,您可以在其中指定格式。

参考

参考文献2

于 2013-07-10T01:59:33.710 回答
1

试试这个

select CONVERT(varchar,<datecol>,103)      ---  and will return as dd/mm/yyyy

where convert(date,<datecol>) between '' and ''
于 2013-07-10T02:47:25.050 回答
0

首先确保TimeDate列的日期部分采用您想要的格式,即“dd/mm/yyyy”。

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

编辑:要格式化输出,您可以执行以下操作:假设您在 GridView1 上的 TimeDate 上有一个 Boundfield:

<asp:BoundField DataField="TimeDate" HeaderText="TimeDate" DataFormatString="{0:dd/MM/yyyy}" />

您还可以使用DataFormatString="{0:d}"当前文化的短日期格式输出日期。

于 2013-07-10T02:03:27.117 回答