【问题标题】:How to change SQL Server time(7) format (hh:mm tt) in datagridview control c#如何在datagridview控件c#中更改SQL Server时间(7)格式(hh:mm tt)
【发布时间】:2017-09-03 14:00:43
【问题描述】:

我检查了这个链接 Format SQL Server 2012 Time(7) to "HH:mm"

但我想更改 C# 中的格式。

这样

dgvRoster.Columns[1].DefaultCellStyle = new DataGridViewCellStyle { Format = "hh:mm tt" };

这行代码适用于 SQL Server 的 datetime 数据类型。

我尝试将数据类型 DateTime 更改为 time(7)time(0),但在这些代码行上导致 THIS EXCEPTION

【问题讨论】:

    标签: c# sql-server winforms datetime datagridview


    【解决方案1】:

    Stack Overflow Answer to a similar case in MySQL

    .NET 接受 TIME 数据类型为 System.TimeSpan 而不是 System.DateTime。

    您在这里尝试分配自定义 DateTime 格式,这就是您得到的原因 错误为“输入字符串的格式不正确”。

    您需要指定自定义 TimeSpan 格式,例如

    dataGridView1.Columns1.DefaultCellStyle.Format = @"hh:mm";

    查看此链接以了解有关自定义 TimeSpan 格式的更多信息

    https://msdn.microsoft.com/en-us/library/ee372287(v=vs.110).aspx

    默认情况下,TimeSpan 不支持 12 小时时间格式。

    您需要将 TimeSpan 转换为 DateTime 对象并指定任何自定义 DateTime 格式随心所欲。

    【讨论】:

      【解决方案2】:

      来自MSDN

      自定义 TimeSpan 格式说明符不包含占位符分隔符,例如将天与小时、小时与分钟或秒与小数秒分开的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。例如,“dd.hh:mm”将句点 (.) 定义为天和小时之间的分隔符,将冒号 (:) 定义为小时和分钟之间的分隔符。

      为此,您必须使用\\: 而不是:

      第二个问题是tt 不支持TimeSpan

      所以,要么将数据类型保留为DateTime,要么将格式更改为Format = @"hh\:mm"

      【讨论】:

      • 谢谢这种格式@"hh\:mm" 工作,但我也需要上午/下午。
      • 你必须使用datetime然后
      • 除了 datetime 之外,sql server 和 .net 没有任何兼容类型“hh:mm tt”(因为不需要日期,这对我来说是垃圾)?
      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多