Компоненты Windows Forms. Некоторые сведения о работе с датами

   
На этом шаге мы рассмотрим класс DateTime и приведем пример работы с объектами этого класса.

   
При разработке приложений часто приходится сталкиваться с необходимостью работы с датами, а не только с форматированным выводом дат. Приходится заниматься декомпозицией даты
(разбиением ее на число, месяц, год) и последующей работой с каждой из ее частей, приходится добавлять к дате дни, месяцы и годы, сравнивать даты, складывать и вычитать их, переводить
содержимое строки, в которой записана дата, в тип DateTime (последнее кстати, выполняет метод Parse(String)). Работа с датами основывается на использовании элементов класса
DateTime. В таблице 1 показаны несколько методов этого класса:

Таблица 1. Методы класса DateTime

НаименованиеОписание
AddDaysДобавка заданного количества дней к значению даты
AddHoursДобавка заданного количества часов к значению даты
AddMillisecondsДобавка заданного количества миллисекунд к значению даты
AddMinutesДобавка заданного количества минут к значению даты
AddMonthsДобавка заданного количества месяцев к значению даты
AddSecondsДобавка заданного количества секунд к значению даты
AddTicksДобавка заданного количества тиков к значению даты
AddYearsДобавка заданного количества лет к значению даты
CompareСравнение двух объектов типа DateTime и возврат целого, которое указывает, меньше ли первая дата второй или нет
DaysInMonthВозвращает количество дней в указанном месяце года
FromBinaryПереводит 64-разрядную величину в тип DateTime

   
В таблице 2 приведены некоторые свойства этого класса.

Таблица 2. Свойства класса DateTime

НаименованиеОписание
DateВозвращает компоненту даты
DayВозвращает день месяца
DayOfWeekВозвращает день недели (в числовом варианте значения от 0 (воскресенье) до 6 (суббота))
DayOfYearВозвращает день года
HourВозвращает час (значение от 0 до 23)
MillisecondВозвращает количество миллисекунд
MinuteВозвращает количество минут
MonthВозвращает номер месяца (значение от 1 до 12)
NowВозвращает объект DateTime, которому присвоены текущие дата и время данного компьютера, выраженные как местное время
SecondВозвращает количество секунд
TicksВозвращает количество тиков
TimeOfDayВозвращает время дня (интервал времени, представляющий часть дня, прошедшую с полуночи)
TodayВозвращает текущую дату
YearВозвращает год

   
Остановимся более подробно на вычитании дат. На рисунке 1 показан вид формы с компонентами, а на рисунке 2 - результаты вычитания разных дат.
В примере ниже приведены тексты обработчиков событий этого приложения.


Рис.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;
	 System::DateTime date1 = System::DateTime( 2020, 6, 3, 22, 15, 0 ); 
	 System::DateTime date2 = System::DateTime( 2020, 12, 6, 13, 2, 0 );
	 // Это один из конструкторов класса DateTime, инициализирующий
	 // экземпляр класса значениями (год, месяц, число, часы, минуты, секунды)
	 System::DateTime date3 = System::DateTime( 2020, 10, 12, 8, 42, 0 );
	 // diff1 (разность) равна 185 дней, 14 часов, 47 минут.
	 // Класс TimeSpan задает интервал времени. У него есть свои события и методы 
	 System::TimeSpan diff1 = date2.Subtract( date1 ); 
	 listBox1->Items->Add(date2.ToString());
	 listBox2->Items->Add(date1.ToString());
	 listBox3->Items->Add(diff1.ToString());

	 // date4 получается 17:55:00
	 System::DateTime date4 = date3.Subtract( diff1 ); 
	 listBox1->Items->Add(date3.ToString()); 
	 listBox2->Items->Add(diff1.ToString()); 
	 listBox3->Items->Add(date4.ToString());

	 // diff2 (разность) равна 55 дней, 4 часа,  20 минут. 
	 System::TimeSpan diff2 = date2 - date3; 
	 listBox1->Items->Add(date2.ToString());
	 listBox2->Items->Add(date3.ToString());
	 listBox3->Items->Add(diff2.ToString());

	 // date5 получается 17:55:00
	 System::DateTime date5 = date1 - diff2;
	 listBox1->Items->Add(date1.ToString());
	 listBox2->Items->Add(diff2.ToString());
	 listBox3->Items->Add(date5.ToString());
 }

Архив проекта можно взять здесь.

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий