If your time is actually in ISO-8601 format then you can do this:
DateTime dt = DateTime.ParseExact("1800+0100", "HHmmzzz", null,
DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dt.TimeOfDay); // 17:00:00
But notice that this (correctly) outputs "17:00:00", not "19:00:00".
If your string isn't in ISO-8601 format -- and "1800+0100" really is meant to represent 19:00 GMT -- then you'll need to parse the string manually, or maybe pre-process it before passing it to ParseExact
. Possibly something like this:
string s = "1800+0100";
string temp = s.Substring(0, 4) + ((s[4] == '+') ? '-' : '+') + s.Substring(5);
DateTime dt = DateTime.ParseExact(temp, "HHmmzzz", null,
DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dt.TimeOfDay); // 19:00:00