none
чтение из dataGridView даты и времени RRS feed

  • Вопрос

  • Всем доброго время суток, нужна помощь в следующем.

    В форме находится dataGridView в столбце которой, есть время в следующем формате:

    04.03.2013 10:26:39,097

    04.03.2013 10:26:39,125

    и т.д.

    Есть необходимость в сравнении разности времени из столбцов dataGridView и в случае если результат < 1 с, то его необходимо сохранить в переменную (счётчик).

        int k = 0;

               var dataK  = new List<string>();

               var dataTime = new List<DateTime>();

               string A, B;

                    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)

                      {

                     if (dataGridView1.Rows[i].Cells[1].Value != null)

                       {

                       A = dataGridView1.Rows[i].Cells[6].Value.ToString(); //время

                       B = A.Split(',')[0];

                       dataTime.Add(Convert.ToDateTime(B));

                       dataK.Add(dataGridView1.Rows[i].Cells[1].Value.ToString ()); //сигналы

                       k = k + 1;

                       }

               }

                string time = "00:00:01"; //время с которым будет происходить сравнение

                DateTime dt = Convert.ToDateTime(time);

         dataGridView2.RowCount = k;

    //результат сравнения необходимо записать в dataGridView2

                int sumt = 0;

                int k1 = 0;

                  for (int j = 0; j < k - 1; j++)

                  {

                      if (dataK[j] == dataK[j + 1])

                      {

                         System.TimeSpan diff1 = dataTime[j].Subtract(dataTime[j + 1]);

                         if (diff1.Seconds <= dt.Second)

                          {

                              sumt = sumt + 1;

                          }

                      }

                      if (dataK [j] != dataK [j+1])

                       {

                       dataGridView2.Rows[k1].Cells[1].Value = dataK[j];

                       if (sumt > 0)

                       {

                           dataGridView2.Rows[k1].Cells[2].Value = sumt+1;

                       }

                          if (sumt == 0)

                          {

                              dataGridView2.Rows[k1].Cells[2].Value = sumt;

                          }

                       sumt = 0;

                       k1 = k1 + 1;

                      }

                  }

    Проблема с чтением из dataGridView1 времени после «,» т.е. мсекунд (пришлось пользоваться split) и сравнением на данный момент оно сделано по секундное. Может, есть более правильное и рациональное решение проблемы, буду рад помощи.

    20 июля 2013 г. 6:20

Ответы

Все ответы

  • Нужно сохранить миллисекунды?

    DateTime.ParseExact(A, "dd.MM.yyyy hh:mm:ss,fff", null)

    • Помечено в качестве ответа alekselaix 21 июля 2013 г. 8:22
    • Снята пометка об ответе alekselaix 21 июля 2013 г. 10:39
    • Помечено в качестве ответа alekselaix 21 июля 2013 г. 14:00
    20 июля 2013 г. 7:25
  • Да необходимо из DataGridView1 считать данные с миллисекундами и сравнить между собой, и в случае если результат < 1 с то записываю в счётчик.

                string time = "00:00:01"; //время с которым будет происходить сравнение, 1 с

                DateTime dt = Convert.ToDateTime(time);

      System.TimeSpan diff1 = dataTime[j].Subtract(dataTime[j + 1]);

                         if (diff1.Seconds <= dt.Second)

                          {

                              sumt = sumt + 1;

                          }


    20 июля 2013 г. 7:32
  • Нужно сохранить миллисекунды?

    DateTime.ParseExact(A, "dd.MM.yyyy hh:mm:ss,fff", null)

    не распознаётся дата и время, не понятно в чём беда.
    • Изменено alekselaix 20 июля 2013 г. 9:49 неверно
    20 июля 2013 г. 9:45
  • Спасибо, проблема была в региональных настройках.
    21 июля 2013 г. 8:23