public static bool operator >(MyTime a, MyTime b) // Если A > B, то True { MyTime TempA = new MyTime(), TempB = new MyTime(); // на всякий случай делаем отлельное время TempA.Days = a.Days; TempA.Hours = a.Hours; TempA.Minutes = a.Minutes; TempA.Seconds = a.Seconds; TempB.Days = b.Days; TempB.Hours = b.Hours; TempB.Minutes = b.Minutes; TempB.Seconds = b.Seconds; //Чтобы сравнить MyTime(0d 0,60,0) и MyTime(0d 1,0,0) приведём оба времени "к общему знаменателю" //Переведём всё в секунды и сравним TempA = TempA.ConvertTo_Ss(); TempB = TempB.ConvertTo_Ss(); if ((TempA.Seconds) > (TempB.Seconds)) //Сравниваем секунды { return(true); } else { return(false); } }
private void lblT1_D_Click(object sender, EventArgs e) { int i = 1; MyTime[] t = new MyTime[5]; t[0] = new MyTime(); t[0].Reset(); }
public override bool Equals(object obj) { if (obj.GetType() != GetType()) { return(false); } MyTime t = (MyTime)obj; return(Days == t.Days && Hours == t.Hours && Minutes == t.Minutes && Seconds == t.Seconds); }
// Для уменьшения кода выделили повторяющийся код в метод public void Results(MyTime t, TextBox tbx) { tbx.Text += t.ToString() + " = (Д) " + t.ConvertTo_Ds().ToString() + " = (Ч) " + t.ConvertTo_Hs().ToString() + " = (М) " + t.ConvertTo_Ms().ToString() + " = (С) " + t.ConvertTo_Ss().ToString() + '\r' + '\n' + '\r' + '\n'; }
public static MyTime operator -(MyTime t1, MyTime t2) //Разница между двумя временами { MyTime xt1 = t1.ConvertTo_Ss(); //конвертируем 2 времени в секунды MyTime xt2 = t2.ConvertTo_Ss(); MyTime xt3 = new MyTime(); xt3.Ss = Math.Abs(xt1.Ss - xt2.Ss); //вычетаем секунды по модулю xt3.ConvertTo_Ds(); //конвертируем обратнов дни return(xt3); }
public static MyTime operator +(MyTime t1, MyTime t2) //Сложить два время { MyTime t3 = new MyTime { Ds = (t1.Ds + t2.Ds), Hs = (t1.Hs + t2.Hs), Ms = (t1.Ms + t2.Ms), Ss = (t1.Ss + t2.Ss) }; return(t3); }
public MyTime ConvertTo_Ms() // конвертируем всё время в Минуты ( и "остаток" пишем в секунды) { MyTime xt = new MyTime(); xt.Ds = Ds; xt.Hs = Hs; xt.Ms = Ms; xt.Ss = Ss; xt = xt.ConvertTo_Ss(); // конвертируем всё время в Секунды xt.Ms = xt.Ss / 60; // переводим секунды в минуты xt.Ss = 0 + Math.Abs(xt.Ms * 60 - xt.Ss); // В секунды пишем остаток return(xt); }
public MyTime ConvertTo_Ds() // конвертируем всё время в Дни (и раскидываем "остаток" на часы, минуты и секунды) { //Также этот метод полностью "нормализует" время MyTime xt = new MyTime(); xt.Ds = Ds; xt.Hs = Hs; xt.Ms = Ms; xt.Ss = Ss; xt = xt.ConvertTo_Hs(); // конвертируем всё время в Часы (и раскидываем "остаток" на минуты и секунды) xt.Ds = xt.Hs / 24; // получаем колличество дней xt.Hs = 0 + Math.Abs(xt.Ds * 24 - xt.Hs); // В часы пишем остаток return(xt); }
public MyTime ConvertTo_Hs() // конвертируем всё время в Часы (и раскидываем "остаток" на минуты и секунды) { MyTime xt = new MyTime(); xt.Ds = Ds; xt.Hs = Hs; xt.Ms = Ms; xt.Ss = Ss; xt = xt.ConvertTo_Ss(); // конвертируем всё время в Секунды xt.Ms = xt.Ss / 60; // получаем минуты xt.Ss = 0 + Math.Abs(xt.Ms * 60 - xt.Ss); // В секунды пишем остаток xt.Hs = xt.Ms / 60; // получаем часы xt.Ms = 0 + Math.Abs(xt.Hs * 60 - xt.Ms); // В минуты пишем остаток return(xt); }
public MyTime ConvertTo_Ss() // конвертируем всё время в Секунды { MyTime xt = new MyTime(); // на всякий случай делаем отлельное время xt.Ds = Ds; xt.Hs = Hs; xt.Ms = Ms; xt.Ss = Ss; xt.Hs = (xt.Ds * 24) + xt.Hs; // переводим дни в часы xt.Ds = 0; // и обнуляем дни xt.Ms = (xt.Hs * 60) + xt.Ms; // переводим часы в минуты xt.Hs = 0; // и обнуляем часы xt.Ss = (xt.Ms * 60) + xt.Ss; // переводим минуты в секунды xt.Ms = 0; // и обнуляем минуты return(xt); }
private void buttonRes_Click(object sender, EventArgs e) { /* * Тестировала значения для unit-тестов * * MyTime testtime1 = new MyTime(0,1,0,0); * MyTime testtime2 = new MyTime(0, 0, 60, 0); * bool ok; * if (testtime1 != testtime2) ok = true; * else ok = false; * * MyTime s1 = new MyTime(1, 23, 59, 59); * MyTime s2 = new MyTime(0, 0, 0, 6); * MyTime s3 = s1 + s2; */ try // чтобы не вылетало { //берём значения из текстбоксов и переводим их из STRING в INT MyTime time1 = new MyTime(Int32.Parse(tBxT1_Ds.Text), Int32.Parse(tBxT1_Hs.Text), Int32.Parse(tBxT1_Ms.Text), Int32.Parse(tBxT1_Ss.Text)); MyTime time2 = new MyTime(Int32.Parse(tBxT2_Ds.Text), Int32.Parse(tBxT2_Hs.Text), Int32.Parse(tBxT2_Ms.Text), Int32.Parse(tBxT2_Ss.Text)); MyTime time3 = new MyTime(); if (cmbBxOperator.Text == "+") { time3 = (time1 + time2); textBoxRes.Text += "Первое время:" + '\r' + '\n'; Results(time1, textBoxRes); textBoxRes.Text += "Второе время:" + '\r' + '\n'; Results(time2, textBoxRes); textBoxRes.Text += "Третье время (их сумма):" + '\r' + '\n'; Results(time3, textBoxRes); textBoxRes.Text += "----------------------- " + '\r' + '\n'; } else if (cmbBxOperator.Text == "-") { time3 = (time1 - time2); textBoxRes.Text += "Первое время:" + '\r' + '\n'; Results(time1, textBoxRes); textBoxRes.Text += "Второе время:" + '\r' + '\n'; Results(time2, textBoxRes); textBoxRes.Text += "Третье время (их разница):" + '\r' + '\n'; Results(time3, textBoxRes); textBoxRes.Text += "----------------------- " + '\r' + '\n'; } else if (cmbBxOperator.Text == ">") { textBoxRes.Text += "Первое время:" + '\r' + '\n'; Results(time1, textBoxRes); textBoxRes.Text += "Второе время:" + '\r' + '\n'; Results(time2, textBoxRes); textBoxRes.Text += " " + '\r' + '\n'; if (time1 > time2) { textBoxRes.Text += time1.ToString() + " > " + time2.ToString() + " is True" + '\r' + '\n'; } else { textBoxRes.Text += time1.ToString() + " > " + time2.ToString() + " is False" + '\r' + '\n'; } } else if (cmbBxOperator.Text == "<") { textBoxRes.Text += "Первое время:" + '\r' + '\n'; Results(time1, textBoxRes); textBoxRes.Text += "Второе время:" + '\r' + '\n'; Results(time2, textBoxRes); textBoxRes.Text += " " + '\r' + '\n'; if (time1 < time2) { textBoxRes.Text += time1.ToString() + " < " + time2.ToString() + " is True" + '\r' + '\n'; } else { textBoxRes.Text += time1.ToString() + " < " + time2.ToString() + " is False" + '\r' + '\n'; } } else if (cmbBxOperator.Text == "=") { textBoxRes.Text += "Первое время:" + '\r' + '\n'; Results(time1, textBoxRes); textBoxRes.Text += "Второе время:" + '\r' + '\n'; Results(time2, textBoxRes); textBoxRes.Text += " " + '\r' + '\n'; if (time1 == time2) { textBoxRes.Text += time1.ToString() + " = " + time2.ToString() + " is True" + '\r' + '\n'; } else { textBoxRes.Text += time1.ToString() + " = " + time2.ToString() + " is False" + '\r' + '\n'; } } } // если ошибка, то в текстбокс напишется сообщение об ошибке catch (Exception ex) { textBoxRes.Text += ex.Message + '\r' + '\n' + '\r' + '\n'; } }