РЕДАКТИРОВАТЬ: у меня была смесь того, чтобы быть правильным, а не :)
Показывает местное время, представленное строкой UTC . Досадно, что DateTime не проясняет подобные вещи, IMO. Кроме того, я не думаю, что вы хотите использовать «Z» в качестве спецификатора формата для часового пояса; это не совсем корректный спецификатор формата; это должно быть 'z', но это предназначено для таких вещей, как "+01: 00". Я думаю, что вы должны использовать «К». Честно говоря, это не совсем понятно, но если вы используете 'K', то он совершает круговые обходы, конечно (конечно же, также и «Z», но только потому, что он игнорирует его, рассматривая его как простой текст).
Вы можете исправить это, просто вызвав ToUniversalTime
или (предпочтительно IMO), указав DateTimeStyles.AdjustToUniversal
в качестве дополнительного аргумента:
DateTime dt = DateTime.ParseExact("2010-08-02Z", "yyyy-MM-ddK",
CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal);