Как разобрать этот DateTimeOffset? - PullRequest
0 голосов
/ 18 октября 2018

Я получаю строку DateTimeOffset как "2018-10-16T193850 + 0200" , но я думаю, что это не один из стандартных форматов.В основном, часть "+0200" не является стандартной, поскольку в ней отсутствует двоеточие.

Какой формат мне нужно указать для разбора DateTimeOffsets следующим образом?спасибо!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

К сожалению, установка DateTimeInfo.TimeSeparator в пустую строку не поможет.

Но вы можете использовать DateTimeOffset.ParseExact следующим образом:

DateTimeOffset date = DateTimeOffset.ParseExact("2018-10-16T193850+0200", "yyyy'-'MM'-'dd'T'HH''mm''ss''K", CultureInfo.InvariantCulture.DateTimeFormat);

Хитрость заключается в том, чтобы указать спецификатор формата 'K', чтобы принимать все виды смещений.В дополнение к указанной выше строке даты будет также правильно проанализировано следующее:

"2018-10-16T193850Z" - UTC

"2018-10-16T193850" - местное время

РЕДАКТИРОВАТЬ
Мой ответ аналогичен ответу Тима Шмельтера, за исключением части 'K'.

0 голосов
/ 18 октября 2018

Вы можете использовать ParseExact:

DateTimeOffset offsetDate = DateTimeOffset.ParseExact(
    "2018-10-16T193850+0200",
    "yyyy-MM-dd'T'HHmmsszzzz",
    DateTimeFormatInfo.InvariantInfo,
    DateTimeStyles.None);

Чтение: Пользовательские строки формата даты и времени

...