К сожалению, начинать с местного времени проблематично - потому что местное время может быть неоднозначным (или даже недействительным).Вам нужно решить, что делать в такой ситуации.
После того, как вы получите время UTC, вы можете позвонить TimeZoneInfo.GetUtcOffset
в обоих часовых поясах и вычесть одно смещение издругое.
С точки зрения первоначального преобразования в UTC ... вы можете позвонить GetUtcOffset
с "местным" DateTime
(под этим я подразумеваю DateTime
с видом Unspecified
, не Local
), затем создайте DateTime
, вычтя смещение из местного времени и сделав вид Utc
.Обратите внимание, что вызов GetUtcOffset
предполагает стандартное время, если местное время неоднозначно.
Конечно, перед тем, как выполнить любой , вам необходимо получить соответствующие объекты TimeZoneInfo
дляваши два часовых пояса.У тебя есть такие?Если бы вы могли точно сказать, каковы ваши входные значения и типы, и как вы хотите справиться с неоднозначностью, я мог бы, вероятно, создать метод, чтобы сделать это ... (Я бы предпочел сделать это в мое Noda Time *Библиотека 1024 *, но в Silverlight ее пока нет ...)