Почему DateTime.Now.ToString ("u") не работает?

«u» - это универсальный сортируемый c# шаблон даты и времени, а c#.net не формат UTC; Процитируем utc documentation:

Представляет строку настраиваемого vb.net формата даты и времени, определенную csharp свойством DateTimeFormatInfo datetime .. ::. UniversalSortableDateTimePattern. Шаблон .net отражает определенный стандарт, и datetime-functions свойство доступно только utc для чтения. Поэтому он всегда vbproj один и тот же, независимо universal-time от используемого языка и csharp региональных параметров или datetime-functions предоставленного поставщика utc формата. Строка настраиваемого c# формата: «гггг» - «мм» - «дд .net чч»: «мм»: «сс'Z» ».

Когда datetime используется этот описатель c# стандартного формата, операция vb.net форматирования или синтаксического .net анализа всегда использует .net-framework инвариантный язык и региональные .net параметры.

Форматирование universal-time не преобразует часовой пояс .net для объекта даты и времени. Поэтому universal-time приложение должно преобразовать c# дату и время в универсальное datetime-functions координированное время (UTC), прежде .net-framework чем использовать этот описатель universal-time формата.

c#

.net

vb.net

datetime

utc

2022-05-25T02:03:21+00:00