“存储的日期时间为 12 小时格式”不,代表 a 的字符串DateTime
已格式化,aDateTime
永远没有格式。DateTime
存储 a时使用DateTime
a ,string
仅在要显示时使用 a 。如果它已经DateTime
在您的 a 中DataSet
,则无需将其转换为 astring
并转换回DateTime
via 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
类型,当您想要显示值时,在最后阶段将其转换为字符串DataColumn
DataTable
- 您正在将“字符串日期”转换为日期时间,用于
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();
请注意,您还可以使用DataFormatString
GridView 的属性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
.