У меня есть следующий код, который вводит ввод scheduleConfiguration.Time
в UTC и возвращает ticks
по местному времени.Как использовать TimeSpan в разных часовых поясах?
scheduleConfiguration.Time equal {9/13/2015 10:00:00 AM} in UTC
var localTime = scheduleConfiguration.Time.ToLocalTime(); {9/13/2015 1:00:00 PM} in Local
var executionTime = new TimeSpan(localTime.TimeOfDay.Ticks);
Я изменил мой контракт данных scheduleConfiguration.Time
, так что мне нужно использовать TimeSpan TimeOfDay
вместо DateTime Time
, но мне нужно иметь один и тот же executionTime
. Так что делать дальше
var local time = DateTime.Now.Date.Add(scheduleConfiguration.TimeOfDay);//{9/13/2015 10:00:00 AM} in Local
var executionTime = new TimeSpan(localTime.Ticks);
Так что есть разница в 3-х часов (и я UTC +3 часовой пояс)
Как получить тот же результат, как и для DateTime в первой ситуации?
хорошие вопросы! Я думаю, вам нужно создать localTime во втором варианте для UTC. Поэтому '{9/13/2015 10:00:00 AM}' должно быть в формате UTC, а не по местному времени –
Вы должны проверить этот ответ: http://stackoverflow.com/questions/4331189/datetime-vs-datetimeoffset – Wouter
@Wouter Как использовать DateTimeOffset в моей ситуации? – Anatoly