Хоча ви можете використовувати Valueвластивість безпосередньо відповідно до відповіді Лешека, я, ймовірно, використовую оператор-null в поєднанні з оператором, що поєднує null:
string dateInUTCString =
date?.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture)
?? "";
Тут ?.просто буде приведено до значення null, якщо datenull, і ??оператор надасть значення за замовчуванням, якщо результат date?.ToUniversalTime().ToString(...)виклику буде null (що відбудеться лише якщо datenull).
Зауважте, що ви дійсно хочете вказати інваріантну культуру, щоб уникнути отримання несподіваних результатів, коли культура поточного потоку не використовує григоріанський календар, і вам не потрібно цитувати всі ці літерали у рядку формату. Це, безумовно, працює, коли ви це робите, але важче читати ІМО.
Якщо ви не заперечуєте, яка точність виражається в рядку, ви можете спростити код за допомогою рядка стандартного формату "O" :
string dateInUTCString = date?.ToUniversalTime().ToString("O") ?? "";
У цей момент вам не потрібно вказувати, CultureInfo.InvariantCultureяк це завжди використовується "O".
.ToString("o")?