【发布时间】:2022-01-23 21:06:45
【问题描述】:
我正在开发一个 C# ASP.NET Webforms 应用程序,其中有一个小时列,但在我的数据库中,格式是 1020 而不是 10:20。我想将 1020 转换为小时格式。
我正在尝试这段代码:
public void BindGrid()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["oscConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT servicio.callID AS ID, servicio.custmrName AS CLIENTE, servicio.customer AS CODIGO, servicio.subject AS DESCRIPCION, servicio.createTime AS HORA, servicio.createDate AS FECHA, status.Name AS ESTADO FROM status INNER JOIN servicio ON status.statusID = servicio.status WHERE (servicio.status = 1) "; /*-1 OR servicio.status = 9*/
cmd.Connection = con;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
}
protected string handle(object text)
{
DateTime dateTime = Convert.ToDateTime(text);
return dateTime.ToShortTimeString();
}
但是当我尝试这个时,我得到了错误
不是日期时间有效格式
或
无法将 Int16 转换为日期时间
这是我前面的代码
<asp:GridView ID="GridView1" runat="server"
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None"
BorderWidth="1px" Width="100%" CellPadding="4"
ForeColor="Black" GridLines="Horizontal">
<Columns>
<asp:TemplateField HeaderText="Hora">
<ItemTemplate>
<%# handle(Eval("Hora"))%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
感谢您的帮助
【问题讨论】:
-
除非您将日期和时间存储为文本,否则数据库没有日期和时间的“格式”。格式化日期和时间是表示层的问题,而不是数据库或 SQL 的问题。
-
请编辑您的问题以避免出现 大量 的空白垂直空格。问问自己,如果您试图回答问题,您希望如何阅读代码,然后对其进行编辑,使其看起来像这样。
-
此外,您发布的代码将泄漏
SqlConnection句柄,因为您没有关闭/处置打开的连接。 -
永远不要使用
Convert.ToDateTime(),因为它无法控制值的解析方式。相反,您应该使用DateTime.TryParseExact或类似名称。 (事实上,完全避免使用Convert类,除了它的 Base64 方法)。 -
当你说“在数据库中的格式是”时——更重要的问题是……它是什么数据类型?诠释?字符串?