在DataTable中的用户TimeZone中显示DateTime数据

时间:2009-05-20 13:48:35

标签: datatable timezone

我们有一个报告应用程序,其中所有DateTime都以UTC格式存储在数据库中(SQL server 2005)

报告应用程序只需检索DataTable并绑定到显示信息的DataGrid。

如果我们知道登录用户的时区(例如+3 GMT),有没有办法更新UTC中的DataTables日期,以便现在显示在用户时区?

我们知道我们可以对DataTable中的每一列/每行进行假脱机并进行转换但是有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

我会修改显示给用户的时间。保持它的存储方式是一致的,还要存储它们的时区,然后修改UI以显示正确的本地时间。例如,如果他们的时区是中央标准时间,那么您可以使用类似于以下代码的内容:

SomeDataObject someDataObject = new SomeDataObject();

someDataObject.TimeZone = -5; //UTC Timezone for Central Standard Time
someDataObject.Time = DateTime.Now;

DateTime someTime = someDataObject.Time;
someTime.Add(someDataObject.TimeZone); // Display this back to the user

答案 1 :(得分:0)

如果使用.NET,那么就会有一个内置类,它是为此目的而制作的。 TimeZoneInfo(http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx)取自文章:

  

TimeZoneInfo对象可以表示任何时区,TimeZoneInfo类的方法可用于将一个时区中的时间转换为任何其他时区中的相应时间。 TimeZoneInfo类的成员支持以下操作:

     
      
  • 检索已由操作系统定义的时区。
  •   
  • 枚举系统上可用的时区。
  •   
  • 转换不同时区之间的时间。
  •   
  • 创建尚未由操作系统定义的新时区。
  •   
  • 序列化时区以供日后检索。
  •   

希望这有帮助。