Хотя вы можете использовать Valueсвойство напрямую согласно ответу Лешека, я бы, вероятно, использовал условно-нулевой оператор в сочетании с оператором объединяющего нуль:
string dateInUTCString =
date?.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture)
?? "";
Здесь значение ?.просто приведет к нулевому значению, если dateравно нулю, и ??оператор предоставит значение по умолчанию, если результат date?.ToUniversalTime().ToString(...)вызова равен нулю (что будет происходить, только если dateравно нулю).
Обратите внимание, что вы действительно хотите указать инвариантную культуру, чтобы избежать неожиданных результатов, когда культура текущего потока не использует григорианский календарь, и вам не нужно заключать в кавычки все эти литералы в строке формата. Это, конечно, работает, когда вы делаете это, но труднее читать IMO.
Если вы не возражаете против точности, выраженной в строке, вы можете упростить код, используя стандартную строку формата «O» :
string dateInUTCString = date?.ToUniversalTime().ToString("O") ?? "";
На этом этапе вам не нужно указывать, CultureInfo.InvariantCultureкак это всегда используется "O".
.ToString("o")?