c # tryParseExact не распознается как действительная дата и время - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь разобрать строку, которую пытаюсь проанализировать.

, когда я использую var newDt = Convert.ToDateTime("3/6/2019 12:00:00 AM +00:00");

Это дает мне дату с другим часовым поясом.Я хотел бы получить время даты 3/5/2019 4:00AM

Я хотел бы, чтобы он анализировал и возвращал то же время даты, что и строка.

Я пытался

var newDt = DateTime.ParseExact("3/6/2019 12:00:00 AM +00:00", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

Я получаю сообщение об ошибке

System.FormatException: 'Строка не была распознана как допустимый DateTime.

Как я могу разобрать дату "3/6/2019 12:00:00 AM +00:00", чтобы вернуть дату и время с тем же значением 3/6/2019 12 AM

1 Ответ

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

Возможно, у вас UTC-08: 00 часовой пояс (который, как я полагаю, ваша кодовая часть Convert.ToDateTime возвращает 3/6/2019 4:00AM, а не 3/5/2019 4:00AM) на вашем компьютере, и именно поэтому, когда вы анализируете его со смещениемзначение, вы получите 4 часа добавленной стоимости.

Если ваша строка содержит значение смещение UTC , было бы лучше проанализировать его как DateTimeOffset вместо DateTime.

var newDt = DateTimeOffset.ParseExact("3/6/2019 12:00:00 AM +00:00", 
                                      "M/d/yyyy h:mm:ss tt zzz",
                                      CultureInfo.InvariantCulture);

Тогда вы можете использовать его .DateTime свойство , чтобы получить ожидаемое вами значение.

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