如何将GridView绑定的时间列显示为本地时间
2007-09-14 08:53
399 查看
数据库中保存为 UTC 格式的 “时间”,BIND 到 GRIDVIEW 中后, 如何显示为本地格式的时间?
可以在RowDataBound的时候,将时间从GMT转成Local如下:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// Convert UTC to local times (DateTime field is column 1)
if (e.Row.RowType == DataControlRowType.DataRow)
{
DateTime TempDateTime;
// convert text in GridView cell to DateTime
TempDateTime = DateTime.Parse(e.Row.Cells[1].Text);
// convert UTC to LocalTime
TempDateTime = TempDateTime.ToLocalTime();
// replace text in GridView cell
e.Row.Cells[1].Text = TempDateTime.ToString();
}
}
如果希望在事件中处理问题.也可以在Gridview中加入一个Templet的列,然后在在其中加入一个Label 然后对显示的text 内容进行处理 如下。
<asp:Label ID="lbl1" runat="server" Text=<%# System.DateTime.Parse(DataBinder.Eval(Container.DataItem, "LastModified").ToString() + " GMT") %> ></asp:Label>
最后还有一种方法就是直接在返回的DataTable中进行处理,通过循环将所有的GMT时间转成当前的时间,来解决此问题。不过如果是这么处理的话,如果需要对数据update的话需要特别留意,需要先将本地时间再转回到GMT时间,然后插入到数据库中。
其实在系统中保存的时间格式使用的一直都是UTC,所以Local的时间一般只是用于显示的时候。所以RowDataBound的时候,将UTC的时间格式通过ToLocalTime()方法转换为当地时间,这个做法就是比较标准的方法了。因为这样作能够很好的将显示层与数据层区分开,当需要把时间写回到DataSet的时候再次将时间在转为UTC时间。
如果这样依旧不能很好的满足您的需求的话,建议您可以重载GridView控件,当遇到DateTime类型的数据时,自动执行DateTime.toLocalTime()的方法,以达到显示本地时间的目的,然后当修改数据的时候,再使用toUTCTime()方法,将时间转换为UTC时间从新写回到数据库中。
可以在RowDataBound的时候,将时间从GMT转成Local如下:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// Convert UTC to local times (DateTime field is column 1)
if (e.Row.RowType == DataControlRowType.DataRow)
{
DateTime TempDateTime;
// convert text in GridView cell to DateTime
TempDateTime = DateTime.Parse(e.Row.Cells[1].Text);
// convert UTC to LocalTime
TempDateTime = TempDateTime.ToLocalTime();
// replace text in GridView cell
e.Row.Cells[1].Text = TempDateTime.ToString();
}
}
如果希望在事件中处理问题.也可以在Gridview中加入一个Templet的列,然后在在其中加入一个Label 然后对显示的text 内容进行处理 如下。
<asp:Label ID="lbl1" runat="server" Text=<%# System.DateTime.Parse(DataBinder.Eval(Container.DataItem, "LastModified").ToString() + " GMT") %> ></asp:Label>
最后还有一种方法就是直接在返回的DataTable中进行处理,通过循环将所有的GMT时间转成当前的时间,来解决此问题。不过如果是这么处理的话,如果需要对数据update的话需要特别留意,需要先将本地时间再转回到GMT时间,然后插入到数据库中。
其实在系统中保存的时间格式使用的一直都是UTC,所以Local的时间一般只是用于显示的时候。所以RowDataBound的时候,将UTC的时间格式通过ToLocalTime()方法转换为当地时间,这个做法就是比较标准的方法了。因为这样作能够很好的将显示层与数据层区分开,当需要把时间写回到DataSet的时候再次将时间在转为UTC时间。
如果这样依旧不能很好的满足您的需求的话,建议您可以重载GridView控件,当遇到DateTime类型的数据时,自动执行DateTime.toLocalTime()的方法,以达到显示本地时间的目的,然后当修改数据的时候,再使用toUTCTime()方法,将时间转换为UTC时间从新写回到数据库中。
相关文章推荐
- 如何解决GridView在本地和服务器上数据显示的不一致?
- 如何让GridView控件在绑定的数据源没有数据时也显示标题
- 如何让GridView控件在绑定的数据源没有数据时也显示标题
- 前台用Gridview绑定数据时时间只显示 年月日 的方法
- GridView绑定项显示时间格式
- 如何在Gridview绑定的记录前添加一列显示序号
- gridview中设置绑定的日期时间类型字段的显示格式
- gridview如何显示柱状图(如何使用绑定的值)
- 如何让GridView控件在绑定的数据源没有数据时也显示标题
- GridView那点事之【如何使用DataView来绑定数据显示到表格中】
- Asp.net Gridview绑定空数据, 如何显示标题
- GridView那点事之【如何使用ExecuteReader()来绑定数据显示到表格中】 .
- GridView绑定时间显示的各种格式
- 如何格式化一个DateTime显示为一天只需在razor生成视图的时间?
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- 数据绑定控件Repeater/GridView/DataList在前台显示正确的文本格式
- asp.net 页面如何将Eval中的时间显示为“yyyy-MM-dd ” 格式
- ASPxGridview总结(ASPxGridView的增,删,改,查,数据绑定,外观显示,功能设定,分页)
- ASP GridView绑定数据为空时,显示footer和header,以实现添加
- spring mvc 在jsp页面如何使时间以格式yyyy-MM-dd HH:mm:ss显示,24小时制