You can just use the TimeSpan.Parse
method:
TimeSpan ts = TimeSpan.Parse("-07:00");
Console.WriteLine(ts); // -07:00:00
Be careful to strip a leading "+" as TimeSpan.Parse will fail here. "+01:00" is incorrect, but "01:00" works.
Or if you want be a little more safe, try the TimeSpan.TryParse
method:
TimeSpan ts;
if (TimeSpan.TryParse("-07:00", out ts))
Console.WriteLine(ts); // -07:00:00
But of course if all you want to do is convert a UTC date/time to a local date/time, you can just do this:
DateTime localDateTime = utcDateTime.ToLocalTime();
Or to convert it to any timezone:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(toTimeZoneDesc);
DateTime localDateTime = TimeZoneInfo.ConvertTime(utcDateTime, tzi);