Не уверен, что у нас достаточно информации от вас (см. Комментарии к вашему вопросу), но я укажу, что это:
DateTimeOffset result = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTimeOffset, timeZoneId)
... эквивалентно этому:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
DateTimeOffset result = TimeZoneInfo.ConvertTime(dateTimeOffset, tzi);
Таким образом, если вы неоднократно работаете с одной и той же зоной, вы можете получить несколько лучшие результаты, посмотрев TimeZoneInfo
объект один раз и удерживая его для повторного использования в будущих преобразованиях.
Я говорю только немного быстрее, потому что и FindSystemTimeZoneById
, и ConvertTimeBySystemTimeZoneId
используют внутренний кеш. Таким образом, вы не сокращаете распределение, а просто время, которое требуется для поиска элемента из кэша.