Шаг 181.
Microsoft Visual C++ 2010. Язык С/С++.
Компоненты Windows Forms. Некоторые сведения о работе с датами (окончание)

    На этом шаге мы рассмотрим выполнение некоторых операций сложения над датами.

    Теперь посмотрим, как работают некоторые методы работы с датами. На рисунке 1 показан вид формы с компонентами, а на рисунке 2 - результаты сложения дат. К первому слагаемому добавлялось построчно количество дней, месяцев и лет. Проверялись методы: Add(), AddDays(), AddMonths(), AddYears(). В примере ниже приведены тексты обработчиков событий этого приложения.


Рис.1. Сложение дат (форма в режиме конструктора)


Рис.2. Сложение дат (выполнение приложения)

    Тексты обработчиков:

// Кнопка "Выход"
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
	 Close();
	 }
// Кнопка "Начать вычисления"
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
			 String^ s;

	 // Метод Add()- добавляет интервал времени к данной дате
	 // Интервал задается данными класса TimeSpan:
	 // запускают один из его конструкторов, который
	 // и задает добавку в днях к данному экземпляру даты

	 // Здесь подсчитывается, какой день недели будет, если к 
	 // текущей дате добавить 36 дней
	 System::DateTime today = System::DateTime::Now; //текущая дата
	 System::TimeSpan duration( 36, 0, 0, 0 );

	 // Конструктор придает начальные значения членам класса: 
	 // задаются количество дней, часы, минуты, секунды. 
	 // Фактически это структура: 
	 // 1-й элемент "интервал времени в днях", 
	 // 2-й элемент - интервал времени в часах, и т. д. 
	 // Мы станем использовать интервал "количество дней"
	 
	 System::DateTime answer = today.Add( duration );
	 // Эта функция добавляет данные структуры duration 
	 // к данным структуры даты

	 s = answer.ToString("dddd", DateTimeFormatInfo::CurrentInfo);
	 
	 // Вывод даты в строку с учетом региональных настроек
	 listBox3->Items->Add(s); //запись результата в ListBox
	 s=today.ToString("dd/MM/yyyy \'г\', dddd", 
		 DateTimeFormatInfo::CurrentInfo);
	 listBox1->Items->Add(s); //запись 1-го слагаемого в ListBox 
	 s = duration.ToString();
	 listBox2->Items->Add(s); //запись 2-го слагаемого в ListBox

	 //Проверка функции добавления дней к дате
	 double d = 36;
	 answer = today.AddDays( d );
	 s=answer.ToString("dddd", DateTimeFormatInfo::CurrentInfo);

	 // Вывод даты в строку с учетом региональных настроек
	 listBox3->Items->Add(s); //запись результата в ListBox
	 s = today.ToString("dd/MM/yyyy \'г\', dddd", 
	 DateTimeFormatInfo::CurrentInfo);
	 listBox1->Items->Add(s); //запись 1-го слагаемого в ListBox 
	 s = d.ToString();
	 listBox2->Items->Add(s); //запись 2-го слагаемого в ListBox

	 //Проверка функции добавления месяцев к дате
	 int dl = 36;
	 answer = today.AddMonths( dl );
	 s = answer.ToString("dddd", DateTimeFormatInfo::CurrentInfo);

	 // Вывод даты в строку с учетом региональных настроек
	 listBox3->Items->Add(s); //запись результата в ListBox
	 s = today.ToString("dd/MM/yyyy \'г\', dddd", 
		 DateTimeFormatInfo::CurrentInfo);
	 listBox1->Items->Add(s); //запись 1-го слагаемого в ListBox 
	 s = dl.ToString();
	 listBox2->Items->Add(s); //запись 2-го слагаемого в ListBox

	 //Проверка функции добавления лет к дате
	 int d2 = 36;
	 answer = today.AddYears( d2 );
	 s = answer.ToString("dddd", DateTimeFormatInfo::CurrentInfo);

	 // Вывод даты в строку с учетом региональных настроек
	 listBox3->Items->Add(s); //запись результата в ListBox
	 s = today.ToString ("dd/MM/yyyy \'г\', dddd", 
		 DateTimeFormatInfo::CurrentInfo);
	 listBox1->Items->Add(s);   //запись 1-го слагаемого в ListBox
	 s = d2.ToString();
	 listBox2->Items->Add(s);  //запись 2-го слагаемого в ListBox
 }
Архив проекта можно взять здесь.

    На следующем шаге мы рассмотрим компонент TabControl.




Предыдущий шаг Содержание Следующий шаг