2016-09-08 7 views
0

У меня есть DateTime в моей программе .NET, которую мне нужно распечатать с определенным значением смещения часового пояса (например, +01: 00 всегда). Выход должен содержать полное время с часовым поясом. Он должен быть не связан с настройкой часового пояса системы. Как я мог это достичь?Выход DateTime as String с предопределенным смещением часового пояса

Пример: У меня есть временная метка, такая как 12-03-2016T12: 30: 34 + 03: 00, и мне нужно вывести ее, рассчитанную для предопределенного TZ +1: 12-03-2016T10: 30: 34 + 01: 00

+0

does 'DateTime.AddHours (hours)' не соответствует этому? – Takarii

+0

Ну, какой бит причиняет вам проблемы? Какой у вас тип «DateTime» (Utc, Unspecified, Local). Нужно ли включать само смещение часового пояса, или вы просто пытаетесь вывести локальное время? На данный момент нам недостаточно информации, чтобы помочь вам ... –

+0

@JonSkeet Мне нужно смещение часового пояса да. Исходное datetime анализируется из строки времени. Я думаю, это может быть добрым. –

ответ

0

Нашел некоторый подход к нему.

Прежде всего, DateTime не хранит в нем часовой пояс. Вместо этого он имеет флаг, является ли он UTC или Local (без идеи, что такое локальный сдвиг TZ). Итак: во-первых, вы получите первоначальный синтаксический анализ времени из любой строковой отметки времени в UTC.

После того, как он хранится в объекте DateTime (с Kind = UTC), вы должны преобразовать его в часовой пояс, для которого вы хотите вывести. Я нахожу примеры здесь полезными: datetime to string with time zone.

Примечание: если вам нужно преобразовать летнее время в Лондон, вы должны знать правильные имена часовых поясов в сети NET, чтобы вы поняли это правильно. См. Difference between UTC and GMT Standard Time in .NET