2013-04-24 5 views
1

Привет, есть ли способ конвертировать эту строку «Суббота 23.04.2013 23:05» в действительный формат DateTime?Преобразование в формат DateTime

Потому что это дает мне FormatExceptionError каждый раз я выполнить это условие:

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

if(DateTime.Parse("Saturday 04/23/2013 11:05 PM") < DateTime.Today) 
{ 
//code here 
} 

Есть ли решение этой проблемы?

+0

трудно преобразовать недопустимое значение допустимым. Вы можете выполнять строковые манипуляции ... Можете ли вы просто отклонить недопустимое значение? –

+0

@AlexeiLevenkov: Почему синтаксический анализ не будет работать, когда мы также дадим формат. –

+0

Почему кто-то gving каждый -1? Не могли бы вы объяснить? – Harrison

ответ

4

использование DateTime.ParseExact()

string _strdate = "Tuesday 04/23/2013 11:05 PM"; // should be tuesday 
DateTime _date = DateTime.ParseExact(_strdate,"dddd MM/dd/yyyy hh:mm tt", 
            CultureInfo.InvariantCulture) 

enter image description here

+0

-1. Дает ту же ошибку, что и OP. –

+0

Удалено -1 ... Также теперь это несколько обманывает - синтаксический анализ будет обрабатывать действительную дату просто отлично ... OP запросил неверную дату по какой-то причине :) –

+0

да. должен быть во вторник. жаль, что я забыл изменить dddd. xD –

0

струна не признан действительным DateTime, потому что день неделю неверно.

04/23/2013 - вторник, а не в субботу.

Возможно, исключение возникает, когда ваше заявление о дате времени является Противоречием.

Надеется, что это поможет ...

+0

Hahaha. Прости. :) –

+0

Итак, почему я получил -1 голос? Мы попытались дать вам решение ...: \ – user151465464

+0

Я не проголосовал за вас, сэр. –

0

дата и день недели не совпадают. 23 апреля 2013 года - вторник, а не в субботу. В календаре мира у вас будет этот день в субботу. Вот почему он дает ошибку String was not recognized as a valid DateTime because the day of week was incorrect.

Возможно, оно преобразует вашу дату, а затем проверяет. Следовательно, он не проходит проверку.

Но когда будет предоставлен вторник, это будет работать.

string str = "Tuesday 04/23/2013 11:05 PM"; 

DateTime dt = DateTime.ParseExact(str, "dddd MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture); 

enter image description here

+0

Эй, почему -1. Что в этом плохого? –

+0

Hahaha. Да, прости! Это помогло мне проследить проблему. :) –

1

Если вы ожидаете, недостоверные данные, вы должны использовать TryParse или TryParseExact

DateTime myDate; 
if(DateTime.TryParse("Saturday 04/23/2013 11:05 PM", out myDate)) 
{ 
    if (myDate < DateTime.Today) { //code here } 
} 
else 
{ 
    //Do something here for invalid data 
} 
Смежные вопросы