Строка не была распознана как допустимое DateTime: исключение формата - PullRequest
0 голосов
/ 13 октября 2011

У меня есть такой путь ... "C: \ restore \ restoreb \"

По этому пути у меня есть такие файлы ..

 backup-2011-10-12T17-16-51.zip
 backup-2011-10-11T13-24-45.zip

У меня есть форма, в этой форме у меня есть список и поле со списком (cbrestore). У меня есть такие элементы списка, как этот ... Месяц, 3 месяца, 6 месяцев, год ...

что я хочу, если я выберу элемент комбинированного списка (месяц), я хочу отобразить имена файлов, которые хранятся в этой папке между этими датами (с 12-10-2011 по 12-09-2011) ..

Если я выберу элемент комбинированного списка (3 месяца), я хочу отобразить имена файлов, которые хранятся в этой папке между этими датами (с 12-10-2011 по 12-07-2011) .. в списке

Для этого я попробовал это .... но, если я выберу месяц списка со списком, я получу ошибку, как я упоминал ниже

 List<String> t = Directory.GetFiles(@"C:\restore\restoredb\").ToList();
    List<String> y = new List<string>();
    List<String> u = new List<string>();



    foreach (var zzz in t)
    {
        y.Add(Path.GetFileName(zzz));
    }


    if (comboBox1.Text == "Month")
    {
        u =
       (from String s in y where ((DateTime.Now.Month - DateTime.Parse(s.Substring(8, 10)).Month) < 1) && (DateTime.Now.Year - DateTime.Parse(s.Substring(8, 10)).Year == 0) select s).
           ToList();
    }

Ошибка: Исключение формата не обработано , строка не была распознана как допустимый DateTime.

в этой строке

(DateTime.Now.Month - (DateTime.Parse(s.Substring(8, 10)).Month) < 1) && (DateTime.Now.Year - DateTime.Parse(s.Substring(8, 10)).Year == 0)

Поможет ли какая-нибудь просьба об этом ......

Большое спасибо .....

Ответы [ 3 ]

1 голос
/ 13 октября 2011

Мне кажется, ваш индекс не верен. Вы принимаете 011-10-12T

s.Substring (7, 10)

1 голос
/ 13 октября 2011

s.Substring (8, 10) - это строка "011-10-12T", основанная на ваших входах, которая не будет анализироваться как дата или часть даты.

Попробуйте построить дату и время из строки ввода, например:

 string input = "backup-2011-10-12T17-16-51.zip";

            string[] splitInputs = input.Split('-');

            DateTime inputDate = new DateTime(
                int.Parse(splitInputs[1]), //Year
                int.Parse(splitInputs[2]), //Month
                int.Parse(splitInputs[3].Split('T')[0]), //Day left of the T 
                int.Parse(splitInputs[3].Split('T')[1]), //Hour, right of the T
                int.Parse(splitInputs[4]), //Minutes
                int.Parse(splitInputs[5].Split('.')[0])); //Seconds, left of the .zip

И используйте это собранное DateTime для выполнения ваших сравнений.

1 голос
/ 13 октября 2011

Я думаю, что вы допустили ошибку в индексах.

Вместо этого попробуйте s.Substring (7, 10).

...