Попытка разобрать DateTime в C # - PullRequest
0 голосов
/ 18 мая 2011

Я пытаюсь проанализировать DateTime в C # и получить следующие строки кода:

string dt =Convert.ToString( DateTime.FromFileTime(e8.sts[counter8].TimeStamp));
string format = "dd-MM-yyyy HH:mm:ss";
DateTime dateTime = DateTime.ParseExact(dt, format,CultureInfo.InvariantCulture);

Когда я отлаживаю, dt приходит как 05/18/2011 09:25:17 AM, но я получаю сообщение об ожидании:

Строка не была признана действительной DateTime.

Ответы [ 6 ]

3 голосов
/ 18 мая 2011

Начиная с начала, вам не нужно преобразование.

DateTime.FromFileTime(e8.sts[counter8].TimeStamp) возвращает DateTime уже ...

Тем не менее, с предоставленной вами строкой, DateTime.Parse(str) позаботится о вас.

Если вы в конечном итоге сохраните это значение в текстовом файле и действительно не сможете использовать строку пользовательского формата для его анализа (что вам не нужно):

Ваш формат:

Day/Month/Year 24-hour:minute:second

Но, глядя на введенную вами дату:

05/18/2011 09:25: 17:00

Вы хотите:

Month/Day/Year 12-hour:minutes:seconds AM/PM

Формат для того, что вы хотите:

MM/dd/yyyy hh:mm:ss tt
1 голос
/ 18 мая 2011

Я не вижу причин для преобразования.Просто используйте:

DateTime.FromFileTime(e8.sts[counter8].TimeStamp)
1 голос
/ 18 мая 2011

Разве этого не ожидается? Дата 05/18/2011 09:25:17 AM не соответствует вашей строке формата dd-MM-yyyy HH:mm:ss. Ваша дата в формате MM/dd/yyyy HH:mm:ss tt.

Попробуйте это:

 DateTime dateTime = DateTime.Parse("05/18/2011 09:25:17 AM");
1 голос
/ 18 мая 2011

Ваш DateTime входит как MM-dd-yyyy, но вы пытаетесь разобрать его как dd-MM-yyyy

Измените строку формата на "MM-dd-yyyy HH:mm:ss tt"

Вы можете сказать это как dt, используя вашу текущую строку формата, пытаясь проанализировать как 5-й день (dd) 18-го месяца (MM) 2011 года (гггг) ...

EDIT:
Извините, я полностью пропустил обозначение AM / PM, вам нужна часть tt строки формата. Это будет обрабатывать AM / PM часть строки

РЕДАКТИРОВАТЬ 2:
Согласно вашему последнему комментарию, вы хотите преобразовать его в MM-dd-yyyy HH:mm:ss строку, все, что вам нужно сделать, это:

var outputString = DateTime.FromFileTime(e8.sts[counter8].TimeStamp).ToString("MM-dd-yyyy HH:mm:ss");

У вас уже есть TimeStamp в объекте val; id .NET DateTime, поэтому все, что вам нужно сделать, это выполнить .ToString() с требуемым форматом времени.

0 голосов
/ 18 мая 2011

s многие другие объяснили здесь, формат должен быть изменен.Однако даже когда я попробовал предложенные форматы, я все равно получил ту же ошибку, что и вы.В конце концов я выбрал правильный формат для получения успешных результатов.

Формат должен быть:

string format = "MM/dd/yyyy HH:mm:ss tt";

, потому что вы указываете временную диаграмму, такую ​​как AM.Если месяц указан одной цифрой, например: 5, то ММ следует заменить на М. Я использовал косую черту вместо переноса между датами, потому что именно так была указана исходная дата.

0 голосов
/ 18 мая 2011
DateTime parsed = DateTime.ParseExact(dt,"MM/dd/yyyy HH:mm:ss tt",CultureInfo.InvariantCulture);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...