Я понимаю, что есть много тем о разборе дат в Твиттере, но у меня возникла особая проблема, и я не смог найти ни одной темы, специфичной для этого.
Я получаю это сообщение: https://twitter.com/bodegamcallen/status/1033757489567805440
с датой создания 8/26/2018 в 9:46 Центральное время.
Дата создания в API: «Sun Aug 26 16:46:06 +0000 2018»
Что имеет смысл как 16:46 вечера (2:46 вечера) UTC 9:46 утра по центральному (-500).
Однако, я анализирую это, используя этот код:
statusModel.DatePosted = DateTime.ParseExact(
this.created_at, "ddd MMM dd HH:mm:ss zzzz yyyy",
CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal);
и вместо того, чтобы получить желаемое время UTC, показанное выше, я получаю это: 8/26/2018 4:46:06 PM
Если я изменю DateTimeStyle на None или AssumeLocal, я получу это: 8/26/2018 11:46:06 AM
Ничего из этого не верно!
Я пробовал разные форматы из других тем, например:
- "ддд ммм дд чч: мм: сс к гггг"
- "ддд ммм дд чч: мм: сс з гггг"
- "ддд ммм дд чч: мм: сс зззгггг"
- "ддд ммм дд чч: мм: сс + фффф гггг"
Я также попытался использовать DateTimeOffset.Parse и изменить культуру на мою (en-us)
они все дают мне одинаковые результаты.
Что я делаю не так? Как сделать так, чтобы дата и время совпадали с временем UTC, равным значению даты, которое я получаю из API?