我们有一个报表应用程序,其中所有的DateTimes都存储在数据库的UTC中(SQL Server 2005)
报表应用程序的工作原理只是检索一个DataTable并绑定到一个显示信息的DataGrid上。
如果我们知道已登录的用户时区(例如,格林尼治标准时间+3),是否有任何方法可以更新以UTC表示的DataTables日期,现在可以在用户时区中显示?
我们知道可以后台处理DataTable中的每个列/行并进行转换,但是有没有更好的更有效的方法?
最佳答案
我会修改显示给用户的时间。保持其存储方式一致,还存储其时区,然后修改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
关于datatable - 在数据表的用户TimeZone中显示DateTime数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/888018/