“存储的日期时间为 12 小时格式”不,代表 a 的字符串DateTime已格式化,aDateTime永远没有格式。DateTime存储 a时使用DateTimea ,string仅在要显示时使用 a 。如果它已经DateTime在您的 a 中DataSet,则无需将其转换为 astring并转换回DateTimevia Convert.ToDateTime(i["CreatedDate"].ToString())。
这段代码很乱,抱歉:
ds.Tables[0].AsEnumerable().ToList().ForEach(i => i["CreatedDate"] = Convert.ToDateTime(i["CreatedDate"].ToString()).ToString("MM/dd/yyyy HH:mm:ss"));
为什么?
- 您正在将 a 转换
DataTable为 aList<DataRow>尽管 aDataTable已经是内存中的对象。那是没有意义和低效的
- 您将 a 存储
DateTime为字符串,您可以将 a 用作 a中的DateTime类型,当您想要显示值时,在最后阶段将其转换为字符串DataColumnDataTable
- 您正在将“字符串日期”转换为日期时间,用于
ToString将其格式化为字符串,然后再次将其转换为日期时间。这将使用默认值ToString(使用您的当前文化)来显示它,这就是您没有获得所需格式的原因
因此,假设这确实是一个字符串并且您不想/可以将其更改为DataTime,这可能会起作用:
var query = ds.Tables[0].AsEnumerable()
.Select(r => Date.Parse(r.Field<String>("CreatedDate")).ToString("MM/dd/yyyy HH:mm:ss"));
gridView1.DataSource = query;
gridView1.DataBind();
请注意,您还可以使用DataFormatStringGridView 的属性BoundField:
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" >
<Columns>
<asp:BoundField DataField="CreatedDate"
HeaderText="Created-Date"
SortExpression="CreatedDate"
DataFormatString="MM/dd/yyyy HH:mm:ss" />
但是随后您需要将其存储为/将其转换为DateTime表中的 a 并将其用作DataSource.