Использование UTC
ISO 8601 ( форматы даты и времени MSDN )
Console.WriteLine(DateTime.UtcNow.ToString("s") + "Z");
2009-11-13T10: 39: 35Z
Z есть , потому что
Если время указано в формате UTC, добавьте букву «Z» сразу после времени без пробела. «Z» - это обозначение зоны для нулевого смещения UTC. «09:30 UTC» поэтому представлено как «09: 30Z» или «0930Z». «14:45:15 UTC» будет «14: 45: 15Z» или «144515Z».
Если вы хотите включить смещение
int hours = TimeZoneInfo.Local.BaseUtcOffset.Hours;
string offset = string.Format("{0}{1}",((hours >0)? "+" :""),hours.ToString("00"));
string isoformat = DateTime.Now.ToString("s") + offset;
Console.WriteLine(isoformat);
Обратите внимание на две вещи: + или - требуется по истечении времени, но, очевидно, + не отображается на положительных числах. Согласно wikipedia смещение может быть в формате + hh или + hh: mm. Я сохранил всего несколько часов.
Насколько мне известно, RFC1123 (дата HTTP, форматер "u") не предназначен для смещения часовых поясов. Все время указано по Гринвичу / UTC.
UtcNow.ToString(s)+Zневерен. ISO8601 поддерживается опцией RoundTripToString("O"). Также отметим, что в принятом ответе используется значение даты и времени в формате UTC, которое всегда будет указывать часовой пояс Z, а не просто использовать фактическое значение даты и времени, которое (если Kind = Local) может содержать часовой пояс для перехода на летнее время. Рассмотрите возможность изменения принятого ответа?