您的位置:首页 > 其它

如何将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时间从新写回到数据库中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: