Подтвердить что ты не робот

Строка Parse С# в DateTime

У меня есть строка вроде этого: 250920111414

Я хочу создать объект DateTime из этой строки. На данный момент я использую подстроку и делаю это следующим образом:

string date = 250920111414;

int year = Convert.ToInt32(date.Substring(4, 4));
int month = Convert.ToInt32(date.Substring(2, 2));
...
DateTime dt = new DateTime(year, month, day ...);

Можно ли использовать строковый формат, сделать то же самое, без подстроки?

4b9b3361

Ответ 1

Совершенно верно. Угадав формат из вашей строки, вы можете использовать ParseExact

string format = "ddMMyyyyHHmm";

DateTime dt = DateTime.ParseExact(value, format, CultureInfo.InvariantCulture);

или TryParseExact:

DateTime dt;
bool success = DateTime.TryParseExact(value, format, 
                     CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);

Последний вызов просто вернет false при сбое разбора, вместо того, чтобы бросать исключение - если у вас могут быть плохие данные, которые не должны приводить к сбою общей задачи (например, пользовательский ввод, и вы просто хотите вызвать их), то это лучший вызов для использования.

РЕДАКТИРОВАТЬ. Подробнее о деталях строки формата см. "Пользовательские строки формата даты и времени" в MSDN.

Ответ 2

Вы можете использовать:

DateTime dt = DateTime.ParseExact(
                  date, 
                  "ddMMyyyyHHmm",
                  CultureInfo.InvariantCulture);

Ответ 3

string iDate = "05/05/2005";
DateTime oDate = Convert.ToDateTime(iDate);
DateTime oDate = DateTime.ParseExact(iString, "yyyy-MM-dd HH:mm tt",null);


Форматы DateTime