Разбивка периода даты на месяцы

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
cool_dude
Сообщения: 2
Зарегистрирован: 22 апр 2015, 14:29

Здравствуйте, уважаемые форумчане! Есть такая задача. При вводе начало и конец периода, на listview выводило количество дней и разбивка на месяцы. Например: Нач.пер. 21/01/15 кон.пер. 25/03/15. А результат должен быть таким: 21/01/15 — 31/01/15 — 11 дней; 01/02/15-28/02/15 — 28 дней; и 01/03/15 — 25/03/15 — 25 дней.
В форме имею два dateTimePicker (начало и конец периода), один ListView (здесь имею три столбика — начало периода, конец периода и количество дней) и кнопку button.
Прошу помощи, в решении этой задачи.
Ниже приведен мой код:

Код: Выделить всё

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 int a, b, c;
                 b = Convert::ToInt32(dateTimePicker1->Text->Substring(3,2));
                 c = Convert::ToInt32(dateTimePicker1->Text->Substring(0,2));
                 p = Convert::ToInt32(dateTimePicker2->Text->Substring(3,2));
                 while (b < p)
                 {
                   b ++;
                   switch (b)
                     {
                       case 1:  dni = 31; d_b = 1; d_f = 31; break;
                       case 2:  dni = 28; d_b = 1; d_f = 28;break;
                       case 3:  dni = 31; d_b = 1; d_f = 31;break;
                       case 4:  dni = 30; d_b = 1; d_f = 30;break;
                       case 5:  dni = 31; d_b = 1; d_f = 31;break;
                       case 6:  dni = 30; d_b = 1; d_f = 30;break;
                       case 7:  dni = 31; d_b = 1; d_f = 31; break;
                       case 8:  dni = 31; d_b = 1; d_f = 31; break;
                       case 9:  dni = 30; d_b = 1; d_f = 30; break;
                       case 10: dni = 31; d_b = 1; d_f = 31; break;
                       case 11: dni = 30; d_b = 1; d_f = 30; break;
                       case 12: dni = 31; d_b = 1; d_f = 31; break;
                          };
   if (b!=0)
   {
   delta = dni - c
   listView1->Items->Add(Convert::ToString(dateTimePicker1->Value.ToShortDateString()));
listView1->Items[i]->SubItems->Add(Convert::ToString(dateTimePicker1->Value.AddDays(delta).ToShortDateString()));
listView1->Items[i]->SubItems->Add(Convert::ToString(delta));
}
else
  {
   delta = dni - d_b;
listView1->Items->Add(Convert::ToString(dateTimePicker1->Value.AddDays(d_b).ToShortDateString()));
listView1->Items[i]->SubItems->Add(Convert::ToString(dateTimePicker1->Value.AddDays(delta).ToShortDateString()));
listView1->Items[i]->SubItems->Add(Convert::ToString(delta));
}
}
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Прям вот так, период одной даты, то есть попросту сутки разбить на месяцы? А ничего, что месяц больше?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
cool_dude
Сообщения: 2
Зарегистрирован: 22 апр 2015, 14:29

Сионист писал(а):Прям вот так, период одной даты, то есть попросту сутки разбить на месяцы? А ничего, что месяц больше?
Спасибо, СИОНИСТ! Я уже решил проблему...:-)
Ответить