Я пытаюсь преобразовать строку в 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.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
также не будет работать по той же причине.
Чтобы получить больше информации;
Вы используете неправильный формат в методе 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");
}