Преобразовать строку в DateTime в C #

1

Я пытаюсь преобразовать строку в DateTime в течение нескольких часов. Строка выглядит так:

"20140519-140324" и я знаю его в UTC

Я уже пробовал это

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
StartTime.Text = ourDateTime.ToString("g");

и это

DateTime ourDateTime= DateTime.ParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
StartTime.Text = ourDateTime.ToString("g");

но ни одна из этих работ не работает. Что я делаю неправильно?

Теги:
datetime

2 ответа

5
Лучший ответ

Из метода DateTime.TryParseExact

Преобразует указанное строковое представление даты и времени в эквивалент DateTime. Формат строкового представления должен точно соответствовать указанному формату.

В вашем примере это не так. yyyyMMdd-HHmmss собственный формат yyyyMMdd-HHmmss, который точно соответствует вашей строке.

Вот пример LINQPad;

string s = "20140519-140324";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyyMMdd-HHmmss", CultureInfo.InvariantCulture,
                          DateTimeStyles.AdjustToUniversal, out dt))
{
    dt.Dump();
}

Здесь demonstration.

Ваш пример DateTime.ParseExact также не будет работать по той же причине.

Чтобы получить больше информации;

  • 0
    Большое спасибо всем, многие люди ответили правильно, я хотел бы отметить все комментарии как ответы, хотя я вроде бы, что yyyy-MM-dd был своего рода абсолютным, чтобы быть напечатанным таким образом. В любом случае, ура и спасибо всем.
  • 0
    @Billatron Добро пожаловать.
1

Вы используете неправильный формат в методе TryParseExact. параметр формата должен быть индикатором формата входной строки. поэтому вам нужно это сделать:

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyyMMdd-HHmmss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
if(success) {
    StartTime.Text = ourDateTime.ToString("g");
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню