如何在datatable中将日期时间格式化为特定的日期格式

4
在我的datagridview1中,日期列显示格式为“MM/dd/yyyy hh:mm:ss”。
然后我使用以下代码。
我使用一个函数来填充datagridview,如下所示。
public void load_table()
{
    DataTable ltdgv = getLoad_table(); 
    //the getLoad_table() function return a datatable type and store it to ltdgv

   foreach (DataRow dr in ltdgv.Rows)
   {
       dr["DATE"] = DateTime.Parse((dr["DATE"].ToString())).ToShortDateString();
   }

   dataGridView1.DataSource = ltdgv;           
}

但是日期列仍然显示 MM/dd/yyyy 格式 [例如:11/27/2016]

但我想将其更改为 dd/MM/yyyy 或 27/11/2016

我尝试将其更改为 =

dr["DATE"] = DateTime.Parse((dr["DATE"].ToString("dd/MM/yyyy"))).ToShortDateString();
// I fill a parameter to the .ToString()

但是现在我遇到了“语法错误”的问题。所以,该如何解决呢?
3个回答

9
不要尝试更改数据表中日期时间列的“格式”。 简单来说,DateTime本身没有格式。您用于显示日期的工具有任务以人类可读的格式呈现它,无论这种格式是什么。 换句话说,必须由DataGridView执行此任务。 您只需设置
dataGridView1.Columns[0].DefaultCellStyle.Format = "dd/MM/yyyy";

(假设网格列索引为零的是您的日期列)

你的答案太棒了,谢谢。我在谷歌上搜索了这种问题,但我觉得没有找到和你的答案一样的。 - phapha pha

4

将自定义格式放在输出的 ToString() 中,而不是输入中。

foreach (DataRow dr in ltdgv.Rows)
{
    dr["DATE"] = DateTime.Parse((dr["DATE"].ToString())).ToString("dd/MM/yyyy");
}

0

如果是 asp:BoundField

<asp:BoundField DataField="BirthDate" HeaderText="Birth Date" DataFormatString = "{0:dd/MM/yyyy}"  />

如果是 asp:TemplateField

<asp:TemplateField HeaderText="Birth Date" ItemStyle-Width="120px" >
    <ItemTemplate>
        <asp:Label Text='<%# Eval("BirthDate", "{0:dd, MMM yyyy}") %>' runat="server" />
    </ItemTemplate>
</asp:TemplateField>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接