将军事时间转换为常规时间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? [关闭]

Vue中有没有办法将军事时间转换为标准时间

在 Dart (Flutter) 中将日期时间转换为 C# timetick [关闭]

如何将 VB 项目转换为 C# 项目 [关闭]

如何将代码从 C# 转换为 PHP [关闭]

C# 将 DateTime 转换为 Sql Server 2005 格式