Преобразование формата строки «гггг-мм-ддтчч: мм: сс.fffZ» в DateTime - PullRequest
6 голосов
/ 05 февраля 2012

Я знаю, что этот вопрос задавался разными способами, и я рассмотрел их все, и ни одно из решений, похоже, не работает для меня.Итак, я надеюсь, что, возможно, вы, ребята, сможете быстро помочь мне.

Строка ввода: "2000-01-01T12: 00: 000Z".Мне нужно взять эту входную строку и преобразовать ее в DateTime, чтобы она могла быть сохранена в базе данных.

Я использовал ParseExact, но продолжаю получать нераспознанное исключение строки даты.Куда я иду не так?

inValue.LatestDepartTime = "2000-01-01T12:00:000Z";
DateTime _latestDepartTime = DateTime.ParseExact(inValue.LatestDepartTime, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);

Ответы [ 5 ]

6 голосов
/ 05 февраля 2012

Ваша строка формата должна точно совпадать с вводом.

Включает буквенные символы T и Z.

5 голосов
/ 05 февраля 2012

Вам необходимо включить \\T и \\Z в строку формата, чтобы соответствовать литералам T и Z.

4 голосов
/ 06 марта 2017

Использование yyyy-MM-dd'T'HH:mm:ss.fff'Z'

Код:

public DateTime convertIsoToDateTime (string iso)
{
    return DateTime.ParseExact(iso, "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture);
}
3 голосов
/ 05 февраля 2012

Вы не указываете T в шаблоне.

Тем не менее, вы можете взглянуть на класс XmlConvert, который предоставляет методы для преобразования этого формата.

1 голос
/ 17 октября 2014

Вам нужно поместить одинарные кавычки вокруг T и Z:

DateTime parsedDateTime;
DateTime.TryParseExact(obj, "yyyy-MM-dd'T'HH:mm:ss'Z'", null, System.Globalization.DateTimeStyles.None, out parsedDateTime);
return parsedDateTime;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...