将军事时间转换为常规时间c#和sql [关闭]
Posted
技术标签:
【中文标题】将军事时间转换为常规时间c#和sql [关闭]【英文标题】:Convert military time to regular time c# and sql [closed] 【发布时间】: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 方法)。
当你说“在数据库中的格式是”时——更重要的问题是……它是什么数据类型?诠释?字符串?
【参考方案1】:
正如你写的 1020,我认为它的数据类型是 INT
你可以尝试这样解析
DateTime dt = DateTime.Parse(text.ToString());
如果它不起作用,那么试试这个
DateTime dateTime;
if(DateTime.TryParseExact(text.ToString(), "yyyyMMdd",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateTime))
然后将 DateTime 转换为字符串(如果需要)
string ConvertedDateTime = dt.ToString("yyyy:MM:dd", CultureInfo.InvariantCulture);
希望对您有所帮助。
【讨论】:
以上是关于将军事时间转换为常规时间c#和sql [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何将流式 DataFrame 转换为常规批处理 DataFrame? [关闭]