20200110T091352 + 0100
Это ISO 8601 Basi c Формат для "полного представления" со смещением. Это определено в разделе 4.3.2 ISO 8601: 2004 (E).
Это может выглядеть странно, потому что часто, когда люди говорят о ISO 8601, они имеют в виду Расширенный формат , который для Ваш пример будет 2020-01-10T09:13:52+01:00
. Оба формата (и другие) являются частью спецификации ISO 8601.
T091352
представляет время дня, 09:13:52. +0100
указывает на смещение часового пояса для этого местного времени. Другими словами, 09:13:52 был на 1 час раньше UT C (что было бы 08:13:52 для того же момента времени).
Вы можете лучше узнать текущее время в этом от. NET форматируется следующим образом:
DateTimeOffset now = DateTimeOffset.Now;
string formatted = now.ToString("yyyyMMddTHHmmsszzz", CultureInfo.InvariantCulture).Remove(18,1);
Работает. NET Скрипка здесь.
.Remove(18,1)
принимает двоеточие (:
) вне строки смещения, созданной в указанном формате zzz
. К сожалению,. NET не имеет спецификатора формата для смещения, показывающего часы и минуты без двоеточия. Вы можете получить те же результаты с .Replace(":","")
, если хотите.
Также обратите внимание, что я использовал DateTimeOffset
вместо DateTime
, потому что вы хотите, чтобы смещение всегда отображалось в ответе правильно. zzz
не рекомендуется для DateTime
значений для заметок в документах , и хотя K
будет работать для DateTime.Now
, оно не обязательно будет согласованным для других значений, поскольку зависит на имущество .Kind
. Если вы должны использовать DateTime
, используйте K
вместо zzz
, но внимательно проверьте .Kind
.