2009-05-20 2 views
3

Мы имеем приложение отчетности, где все DateTimes хранятся в формате UTC в базе данных (SQL Server 2005)Дисплей DateTime данные в TimeZone пользователей в DataTable

Приложение отчетов работает просто извлечения DataTable и привязка к DataGrid отображения информация.

Если мы знаем часовой пояс зарегистрированных пользователей (например, +3 GMT), есть ли способ обновить даты DataTables, которые в UTC теперь отображаются в часовом поясе пользователей?

Мы знаем, что мы можем разматывать каждую колонку/строку в DataTable и делать конверсию, но есть ли более эффективный способ?

ответ

0

Я бы изменил время, пока оно отображается пользователю. Храните, как он хранится согласованно, но также сохраняйте, что такое их часовой пояс, а затем изменяйте пользовательский интерфейс, чтобы показать правильное местное время. Например, если их часовой пояс Central Standard Time, то вы могли бы использовать что-то подобное следующий код:

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 
+0

'Часовой пояс UTC для центрального стандартного времени', что? –

0

При использовании .NET, есть встроенный в классе, который был сделан именно для этой цели. TimeZoneInfo (http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx), как взято из статьи:

объекта

TimeZoneInfo может представлять любой часовой пояс, а методы класса TimeZoneInfo могут быть использованы для преобразования времени в одной временной зоне к соответствующему времени в любом другое время зона. Члены класса TimeZoneInfo поддерживают следующие операции:

  • Извлечение часового пояса, который уже определен операционной системой.
  • Перечисление часовых поясов, доступных в системе.
  • Преобразование времени между различными часовыми поясами.
  • Создание нового часового пояса, который еще не определен операционной системой.
  • Сериализация часового пояса для последующего поиска.

Надеюсь, это поможет.

+0

Обратите внимание, что TimeZoneInfo доступен только в .NET 3.5 и более поздних версиях. – Liedman

 Смежные вопросы

  • Нет связанных вопросов^_^