преобразовать полученную строку datetime в значение dateTime - PullRequest
0 голосов
/ 14 января 2019

Я получаю значение даты и времени через xml, как:

string time = "20150605020247+0000"

Я хочу конвертировать в значение datetime. Я пробовал с DateTime.Parse, ParseExact, Convert.ToDateTime. Не работает, возвращает ошибку:

строка не была распознана как действительная дата и время

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Вы должны использовать DateTime.ParseExact, как это

DateTime theTime = DateTime.ParseExact(time,  "ddMMyyyyHHmmss+ffff,CultureInfo.InvariantCulture);
0 голосов
/ 14 января 2019

Вам необходимо использовать точный спецификатор формата в вашем методе ParseExact.

DateTime.ParseExact("20150605020247+0000", "yyyyMMddHHmmsszzz", System.Globalization.CultureInfo.InvariantCulture);

Скрипка: https://dotnetfiddle.net/cQJ9hN

EDIT:

Пожалуйста, проверьте стандартные форматы DateTime, используемые в мире .NET: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings плюс проверьте источник ваших данных, как точно создаются строковые даты. Однако, скорее всего, частью вашей строки '+ ####' является смещение по местному времени по Гринвичу , а не часть времени (как предлагают другие ответы). Таким образом, синтаксический анализ даты на с использованием «yyyyMMddhhmmssffff» приведет к неверным результатам .

0 голосов
/ 14 января 2019

Вы должны быть в состоянии использовать DateTime.ParseExact, так как вы знаете точный формат строки. Если мы предположим, что это год, месяц, день, час, минута, секунда и смещение, то вы можете сделать что-то вроде:

var result = DateTime.ParseExact("20150605020247+0000", "yyyyMMddHHmmsszzz", 
    CultureInfo.InvariantCulture);
...