2014-07-26 3 views
0

В приложении я сохраняю все даты в базе данных как UTC.Как конвертировать WET/WEST Время в UTC?

Однако пользователи вставки даты в Лиссабонском часовом поясе ...

Я проверил и Лиссабон часовой пояс WEST летом и WET остальную часть года.

WET = Western European Time 
WEST = Western European Summer Time 

Затем я попробовал следующее:

DateTime now = DateTime.Now; 
DateTime nowUtc = DateTime.UtcNow; 

DateTime.SpecifyKind(now, DateTimeKind.Local); 

DateTime testNowUtc = now.ToUniversalTime(); 

Но testNowUtc становится такой же, как и сейчас, а не как nowUtc

Как я могу решить эту проблему?

** UPDATE **

Я попытался следующие:

DateTime now = DateTime.Now; 
DateTime nowUtc = DateTime.UtcNow; 

String zone = TimeZoneInfo.Local.IsDaylightSavingTime(now) ? TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName; 

DateTime testNowUtc = TimeZoneInfo.ConvertTimeToUtc(now, TimeZoneInfo.FindSystemTimeZoneById(zone)); 

Но когда я запускаю его я получаю сообщение об ошибке:

The time zone ID 'GMT Daylight Time' was not found on the local computer. 

я упускаю что-то?

+0

http://stackoverflow.com/questions/7908343/list-of-timezone-ids-for-use-with-findtimezonebyid-in-c http://msdn.microsoft.com/en-us/library/ system.timezoneinfo.findsystemtimezonebyid (v = vs.110) .aspx http://msdn.microsoft.com/en-us/library/system.timezoneinfo.converttimetoutc(v=vs.110).aspx – Aron

+0

Я добавил обновление с код, основанный на ваших предложениях, но я получаю сообщение об ошибке: «Идентификатор часового пояса« GMT Daylight Time »не найден на локальном компьютере». –

+0

Название часового пояса - GMT GMT. Независимо от того, действует ли дневная экономия, зависит только от даты. Сокращения, такие как «WET», являются произвольными и двусмысленными, много «CST» вокруг. –

ответ

0
DateTime now = DateTime.Now; 
DateTime nowUtc = DateTime.UtcNow; 

DateTime testNowUtc = TimeZoneInfo.ConvertTimeToUtc(now, TimeZoneInfo.Local); 

Точка TimeZoneInfo заключается в том, что она автоматически переходит на летнее время.

+0

Да, я пробовал, но это не дает мне правильного времени. Это дает мне разницу в один час ... Я думаю, это из-за летнего времени ... –

+0

Нет. Это должно дать правильный ответ. Тем не менее, ваш первоначальный вопрос был в западноевропейское время, в то время как ваш компьютер настроен на GMT. Вы не даете мне правильной информации. – Aron

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