添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm using a DataGridView with object data binding to display information about logging entities in a system, retrieved via SOAP from a remote service. One of the columns is called "Last action" and means the last time the entity logged a message. It is a System.DateTime value. When I read the SOAP response (example below), he timestamp obviously contains all the information, up to second fractions.

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

When I display it on the table, I instead can read up to the minutes I use the following code to do the data binding when I press the refresh button

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

I would like to know how to control column formatting of data bound values. I think that the format dd/MM/yyyy hh:mm comes from my system's settings. How to override formatting settings programmatically?

Thank you in advance

Full solution code on Subversion (FFDAGui program) for the Logbus-ng open source project.

If it is a windows form Datagrid, you could use the below code to format the datetime for a column

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

EDIT :

Apart from this, if you need the datetime in AM/PM format, you could use the below code

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt";
                What if you don't know which column may or may not contain a datetime? Like a dynamic query tool. How would you dynamically match a date entry and change how it gets formatted?
– Trevor Vance
                Jan 19 at 21:50
dataGridViewCellStyle.Format = "dd/MM/yyyy";
this.date.DefaultCellStyle = dataGridViewCellStyle;
// date being a System.Windows.Forms.DataGridViewTextBoxColumn
                dd/MM/yyyy formats the date as dd-MM-yyyy. Use dd'/'MM'/'yyyy to format the date as dd/MM/yyyy
– TFischer
                May 16, 2014 at 17:52
                yourColumn.DefaultCellStyle = new DataGridViewCellStyle { Format = "dd'/'MM'/'yyyy hh:mm:ss" };
– Appulus
                May 5, 2015 at 22:33
                Unfortunately it isnt changing anything for me. My date stays as it is. Looks like the date in my column is treated as a string which makes it non-formatable. Are there special requirements to the dates apart from the point, that they are real date-values?
– C4d
                Feb 5, 2016 at 11:18
                Even for me it does not work, I tried all the ways mentioned here. I'm using BindingSource!
– Lorenzo Belfanti
                May 5, 2016 at 8:09

I used these code Hope it could help

dataGridView2.Rows[n].Cells[3].Value = item[2].ToString();
dataGridView2.Rows[n].Cells[3].Value = Convert.ToDateTime(item[2].ToString()).ToString("d");
                This is if you are manually populating the rows, and it is desirable for you to convert the DateTime to a String. The ToString("d") specifies the date only format from the DateTime ToString method.
– galamdring
                Jun 2, 2017 at 13:59

You can set the format in aspx, just add the property "DateFormatString" in your BoundField.

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

Published by Microsoft in Standard Date and Time Format Strings:

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

That should format the date according to the person's location settings.

This is part of Microsoft's larger collection of Formatting Types in .NET.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.

How to show the complete DateTime value in a Datagridview cell when it is exactly midnight? See more linked questions