2014-01-17 3 views
0

Я хотел бы иметь возможность отображения времени события, которое произошло в другом часовом поясе следующимОтображение меток времени, которые имели место в другом часовом поясе

7:01, 22 ноября (NZDT)

Однако DateTimeOffset сохраняет только числовое смещение для момента времени, а не часового пояса, вызвавшего это смещение.

Есть ли более подходящий тип SQL/.Net, который позволяет хранить фактическую информацию о часовом поясе или мне нужно сохранить ее как 2 отдельных столбца/пользовательский тип .net?

ответ

1

Вам необходимо сохранить зону или что-то еще, что поможет вам восстановить то, что вам нужно. Класс .NET, который помогает, - the TimeZoneInfo class. Если вы посмотрите на него, вы увидите, что он имеет встроенную сериализацию. Он имеет определенную зависимость от часовых поясов, доступных в системе, но имеет способ, позволяющий настраивать часовые пояса. Я думаю, это поможет вам.

1

Как указано в @ g-stoynev, необходимо будет сохранить часовой пояс - так как для любого заданного смещения часового пояса может быть несколько часовых поясов.

Альтернативное решение класса TimeZoneInfo представляет собой библиотеку Nodatime (http://nodatime.org/) - которая имеет классы, которые вместе сохраняют как фактическое время, так и связанную с ним информацию о часовом поясе - и извлекает информацию о часовом поясе из исчерпывающего списка часовых поясов, полученных из базы данных часовых поясов IANA (http://www.iana.org/time-zones).

Независимо от того, используете ли вы библиотеку, имеется много полезной информации о представлении дат, доступных в документации (http://nodatime.org/1.2.x/userguide/concepts.html)

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