¿Cómo formatear columnas DateTime en DataGridView?

Resuelto usr-local-ΕΨΗΕΛΩΝ asked hace 14 años • 7 respuestas

Estoy usando un DataGridView con enlace de datos de objetos para mostrar información sobre entidades de registro en un sistema, recuperada mediante SOAP desde un servicio remoto. Una de las columnas se llama "Última acción" y significa la última vez que la entidad registró un mensaje. Es un System.DateTimevalor. Cuando leo la respuesta SOAP (ejemplo a continuación), la marca de tiempo obviamente contiene toda la información, hasta fracciones de segundo.

<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>

Cuando lo muestro en la mesa, puedo leer hasta los minutos. https://i.stack.imgur.com/dLYBz.png Utilizo el siguiente código para realizar el enlace de datos cuando presiono el botón de actualización.

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; }));
}

Me gustaría saber cómo controlar el formato de las columnas de los valores vinculados a datos. Creo que el formato dd/MM/aaaa hh:mm proviene de la configuración de mi sistema. ¿Cómo anular la configuración de formato mediante programación?

gracias de antemano

Código de solución completo en Subversion (programa FFDAGui) para el proyecto de código abierto Logbus-ng.

Aceptado

Si se trata de un Datagrid de Windows, puede utilizar el siguiente código para formatear la fecha y hora de una columna.

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

EDITAR :

Aparte de esto, si necesita la fecha y hora en formato AM/PM, puede usar el siguiente código

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt";
Sarath Subramanian avatar Aug 02 '2016 17:08 Sarath Subramanian

Utilice la propiedad Column.DefaultCellStyle.Format o configúrela en el diseñador

Denis Palnitsky avatar Oct 27 '2010 12:10 Denis Palnitsky

Puede configurar el formato que desee:

dataGridViewCellStyle.Format = "dd/MM/yyyy";
this.date.DefaultCellStyle = dataGridViewCellStyle;
// date being a System.Windows.Forms.DataGridViewTextBoxColumn
Jla avatar Oct 27 '2010 12:10 Jla

Utilicé este código. Espero que pueda ayudar.

dataGridView2.Rows[n].Cells[3].Value = item[2].ToString();
dataGridView2.Rows[n].Cells[3].Value = Convert.ToDateTime(item[2].ToString()).ToString("d");
Retchel Obcianal avatar Jun 05 '2016 12:06 Retchel Obcianal