如何格式化DataGridView中的DateTime列?

时间:2010-10-27 12:26:05

标签: c# winforms data-binding datetime datagridview

我正在使用带对象数据绑定的DataGridView来显示有关系统中日志记录实体的信息,这些信息是通过SOAP从远程服务检索的。 其中一列称为“上次操作”,表示实体最后一次记录消息。它是System.DateTime值。当我读取SOAP响应(下面的示例)时,他的时间戳显然包含所有信息,最多包含第二部分。

<LoggingEntity>
<host>marty86ce</host>
<process>10148</process>
<logger>http_core</logger>
<appName>httpd</appName>
<ffda>true</ffda>
<lastAction>2010-10-27T12:00:19.5117509Z</lastAction>
<lastHeartbeat>0001-01-01T00:00:00</lastHeartbeat>
<channelId>em_9BA2A2B4D0B6E66</channelId>
<ffdaChannelId>em_E7C8D1D4DE8EEB9</ffdaChannelId>
</LoggingEntity>

当我在桌子上显示它时,我可以读取分钟 http://i.stack.imgur.com/dLYBz.png 当我按下刷新按钮

时,我使用以下代码进行数据绑定
public void RefreshEntities()
{
    IEntityManagement management = EntityPlugin.GetProxy();
    LoggingEntity[] result = management.FindLoggingEntities(new TemplateQuery { ffdaSpecified = true, ffda = true }); //Remote invocation

    Invoke(new MethodInvoker(delegate { gridEntities.DataSource = result; })); //THIS does the data binding from the array

    Invoke(new MethodInvoker(delegate { btnRefresh.Enabled = true; }));
}

我想知道如何控制数据绑定值的列格式。我认为格式dd / MM / yyyy hh:mm来自我的系统设置。 如何以编程方式覆盖格式设置?

提前谢谢

Logbus-ng开源项目Subversion(FFDAGui程序)的完整解决方案代码。

7 个答案:

答案 0 :(得分:38)

使用Column.DefaultCellStyle.Format属性或将其设置为in designer

答案 1 :(得分:29)

您可以设置所需的格式:

dataGridViewCellStyle.Format = "dd/MM/yyyy";
this.date.DefaultCellStyle = dataGridViewCellStyle;
// date being a System.Windows.Forms.DataGridViewTextBoxColumn

答案 2 :(得分:24)

如果是Windows格式的Datagrid,您可以使用以下代码格式化列的日期时间

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss";

编辑:

除此之外,如果您需要AM / PM格式的日期时间,您可以使用以下代码

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt";

答案 3 :(得分:1)

您可以在aspx中设置格式,只需在BoundField中添加属性“DateFormatString”。

DataFormatString="{0:dd/MM/yyyy hh:mm:ss}"

答案 4 :(得分:1)

由Microsoft在Standard Date and Time Format Strings中发布:

dataGrid.Columns[2].DefaultCellStyle.Format = "d"; // Short date

那应该根据该人的位置设置格式化日期。

这是Microsoft Formatting Types in .NET的较大集合中的一部分。

答案 5 :(得分:0)

我使用这些代码希望它可以提供帮助

dataGridView2.Rows[n].Cells[3].Value = item[2].ToString();
dataGridView2.Rows[n].Cells[3].Value = Convert.ToDateTime(item[2].ToString()).ToString("d");

答案 6 :(得分:0)

string stringtodate = ((DateTime)row.Cells[4].Value).ToString("MM-dd-yyyy");
textBox9.Text = stringtodate;