Разбор строки C # в DateTime - PullRequest
       34

Разбор строки C # в DateTime

13 голосов
/ 28 сентября 2011

У меня есть такая строка: 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 ...);

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

Ответы [ 3 ]

26 голосов
/ 28 сентября 2011

Абсолютно.Угадывая формат по вашей строке, вы можете использовать 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.

4 голосов
/ 28 сентября 2011

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

DateTime dt = DateTime.ParseExact(
                  date, 
                  "ddMMyyyyHHmm",
                  CultureInfo.InvariantCulture);
0 голосов
/ 24 июня 2019
string iDate = "05/05/2005";
DateTime oDate = Convert.ToDateTime(iDate);
DateTime oDate = DateTime.ParseExact(iString, "yyyy-MM-dd HH:mm tt",null);


Форматы DateTime

...