Проблема с датой, возвращенной из API - PullRequest
0 голосов
/ 17 февраля 2019

Во-первых, я начинающий программист, прошу прощения, если это не ясно.API, к которому я обращаюсь, возвращает «createDate: 20190216T070519.000Z» или «EndTime: 20190217T190847.181Z». Я не могу понять, как в C # преобразовать это в DateTime.

Это возвращается как строка иЯ получаю

Строка не была распознана как действительный DateTime.

Я пробовал что-то подобное, но у меня нет возможности узнать формат источника или что это такое .000Zя подозреваю, что это часовой пояс.

DateTime.ParseExact(createdDate, "yyyyMMddpHHmmss.fffZ",CultureInfo.InvariantCulture);

также думал, что это поможет, но не уверен, что делать с частью createdDate.Substring(16, 3).

MessageBox.Show(createdDate.Substring(0, 8) +" @ "+ createdDate.Substring(9, 6) + " @ " + createdDate.Substring(16, 3));

Просто смотреть на это, Это может быть формат Python %Y%m%dT%H%M%S.%fZ, но я не уверен, так как я не знаком с Python, но некоторые поиски в Интернете заставляют меня думать, что он близок.Также кажется, что это часовой пояс и, возможно, разница от UTC или что-то в этом роде.Я не хочу, чтобы в моей программе была неправильная информация о дате и времени, поэтому, если кто-нибудь сможет помочь мне разобраться, это было бы здорово.

1 Ответ

0 голосов
/ 17 февраля 2019

Z означает UTC.Если бы был часовой пояс, отличный от UTC, он обычно указывался бы как смещение -600 или что-то вроде этих строк

, так как для вашего анализа даты вы были близки:

DateTime.ParseExact(createdDate,"yyyyMMddTHHmmss.fffK",CultureInfo.InvariantCulture)

C # используетK означает «Добрый», который может быть UTC или локальным или неопределенным

некоторые люди являются сторонниками и скажут, что вам нужно поместить T в одинарные кавычки 'T', например,

DateTime.ParseExact(createdDate,"yyyyMMdd'T'HHmmss.fffK",CultureInfo.InvariantCulture)

но, честно говоря, меня это смущает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...