【问题标题】:How do I display time column as hh:mm tt in datagridview which is retrieved from MYSQL time field?如何在从 MYSQL 时间字段检索的 datagridview 中将时间列显示为 hh:mm tt?
【发布时间】:2015-05-25 06:41:22
【问题描述】:

我在 MYSQL 中有一个 LOGINTIME 列作为 TIME 数据类型。

此列有更多的值如

11:59:00

11:45:34

14:22:22

我想在 datagridview 中将此列显示为 'hh:mm tt' 我的意思是,

11:59 AM

11:45 AM

02:22 PM

代码:

dataGridView1.Columns["LOGINTIME"].DefaultCellStyle.Format = "hh:mm tt";

这是我使用的代码,它显示错误。

http://postimg.org/image/fm01hhyzp/

            MessageBox.Show(dataGridView1.Columns["LOGINTIME"].ValueType.ToString());

它显示“System.TimeSpan”。那么如何将datagridview中的TimeSpan列格式化为“hh:mm tt”

【问题讨论】:

  • 显示什么错误?
  • 没有你的错误信息,是不可能帮到你的。
  • 请发布错误代码。 .NET 将数据读取为日期和时间没有问题,DataGridView 显示 DateTime 和 TimeSpan 值也没有任何问题。如何读取数据以及如何将网格与数据绑定?
  • 没有错误和代码就无法提供帮助。顺便说一句,如果您不强制任何字符串转换,ADO.NET 将日期类型作为 DateTime 和 TIME 作为 TimeSpan 返回。 DataGridViewTextBox 列在绑定和格式化此类属性时没有问题。
  • 我已经附上了错误截图的图片链接

标签: c# datagridview


【解决方案1】:

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

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

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

dataGridView1.Columns["LOGINTIME"].DefaultCellStyle.Format = @"hh\:mm";

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

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

TimeSpan 默认不支持 12 小时制。

您需要将 TimeSpan 转换为 DateTime 对象并根据需要指定任何自定义 DateTime 格式。

【讨论】:

    【解决方案2】:

    检查我编辑的答案...

       dataGridView1.Rows[Index].Cells["LOGINTIME"].Value = Convert.ToDateTime(dataGridView1.Rows[Index].Cells["LOGINTIME"].Value).ToString("hh:mm tt");
    

    【讨论】:

    • 我收到以下错误无法将类型'string'隐式转换为'System.Windows.Forms.DataGridViewColumn'
    • 这段代码试图修改 DataColumn 对象本身,而不是单元格值
    • 您无法通过在列上调用.Value 来获取行的 值。没有这样的属性
    • @PanagiotisKanavos 你的担心是对的。实际上,这只是一个想法,您可以如何做到这一点。无论如何,这是我的正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    相关资源
    最近更新 更多