MessageBox.Show(Regex.Replace(
@"2000-12-13T13:59:59+12:00",
@"\b(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})[+-]\d{2}:\d{2}\b",
@"$1 $2"
));
upd: added word boundaries around the pattern, some explanation and some links
\b - word boundary (not to match "12000-12-13T..." or "X2000-12-13T..." etc, but still to match "(2000-12-13T..." and the like, optional)
( - start first capturing ($1)
\d{4}-\d{2}-\d{2} - date; 4 digits, dash, 2 digits, dash, 2 digits (\d for digit, {N} for exactly N of them)
) - end first capturing ($1)
T - literal "T"
( - start second capturing ($2)
\d{2}:\d{2}:\d{2} - time; 2 digits, colon, 2 digits, colon, 2 digits
) - end second capturing ($2)
[+-] - utc offset sign; any of literal "+" or "-" (be careful with "-" inside [], if between other characters it defines range, like [a-z])
\d{2}:\d{2} - utc offset; 2 digits, colon, 2 digits
\b - word boundary (not to match "...+12:000" or "...+12:00a" etc, optional)
Resources: on regex in general, on .net, on C# in particular, simple tool for testing