Время до окончания текущей пары - C#
Формулировка задачи:
подскажите как решить проблему с датами
Реализовать программу, которая отображает временя до окончания текущей пары. Программа так же должна показывать номер текущей пары от 1-ой до 4-ой
Пример работы программы:
Текущее время: 9:20
Вывод программы: Сейчас идёт 2 пара, до окончания осталось 15 минут
вот что получается
хотелось бы чтобы не пришлось в первых строках кода вводить время так как его надо каждый день менять чтобы программа работала, во вторых появляется несоответствие типов данных при сравнении дат
TimeSpan nach1 = new DateTime(2015, 9, 19, 08, 00, 00).TimeOfDay;
TimeSpan kon1 = new DateTime(2015, 9, 19, 09, 35, 00).TimeOfDay;
TimeSpan nach2 = new DateTime(2015, 9, 19, 09, 45, 00).TimeOfDay;
TimeSpan kon2 = new DateTime(2015, 9, 19, 11, 20, 00).TimeOfDay;
TimeSpan nach3 = new DateTime(2015, 9, 19, 11, 30, 00).TimeOfDay;
TimeSpan kon3 = new DateTime(2015, 9, 19, 13, 35, 00).TimeOfDay;
TimeSpan nach4 = new DateTime(2015, 9, 19, 13, 35, 00).TimeOfDay;
TimeSpan kon4 = new DateTime(2015, 9, 19, 15, 10, 00).TimeOfDay;
TimeSpan vremy= DateTime.Now.TimeOfDay;
int para = 0;
if (Convert.ToDateTime(vremy) < Convert.ToDateTime(kon1))
{
para = 1;
TimeSpan ost = Convert.ToDateTime(vremy) - Convert.ToDateTime(kon1);
Console.WriteLine("Текущее время: {0}:{1}", vremy.Hours, vremy.Minutes);
Console.WriteLine("Вывод программы: Сейчас идёт {0} пара, до окончания осталось {1} минут", para, ost);
}
else if (Convert.ToDateTime(vremy) < Convert.ToDateTime(kon2))
{
para = 2;
TimeSpan ost = Convert.ToDateTime(vremy) - Convert.ToDateTime(kon2);
Console.WriteLine("Текущее время: {0}:{1}", vremy.Hours, vremy.Minutes);
Console.WriteLine("Вывод программы: Сейчас идёт {0} пара, до окончания осталось {1} минут", para, ost);
}
else if (Convert.ToDateTime(vremy) < Convert.ToDateTime(kon3))
{
para = 3;
TimeSpan ost = Convert.ToDateTime(vremy) - Convert.ToDateTime(kon3);
Console.WriteLine("Текущее время: {0}:{1}", vremy.Hours, vremy.Minutes);
Console.WriteLine("Вывод программы: Сейчас идёт {0} пара, до окончания осталось {1} минут", para, ost);
}
else if (Convert.ToDateTime(vremy) < Convert.ToDateTime(kon4))
{
para = 4;
TimeSpan ost = Convert.ToDateTime(vremy) - Convert.ToDateTime(kon4);
Console.WriteLine("Текущее время: {0}:{1}", vremy.Hours, vremy.Minutes);
Console.WriteLine("Вывод программы: Сейчас идёт {0} пара, до окончания осталось {1} минут", para, ost);
}
else
{ Console.WriteLine("пары кончились"); }
Console.ReadKey();Решение задачи: «Время до окончания текущей пары»
textual
Листинг программы
TimeSpan[,] timetable = new TimeSpan[,] {
{ new TimeSpan(08, 00, 00), new TimeSpan(09, 35, 00) },
{ new TimeSpan(09, 45, 00), new TimeSpan(11, 20, 00) },
{ new TimeSpan(11, 30, 00), new TimeSpan(13, 35, 00) },
{ new TimeSpan(13, 35, 00), new TimeSpan(15, 10, 00) },
};
//TimeSpan timeOfDay = DateTime.Now.TimeOfDay;
TimeSpan timeOfDay = new TimeSpan(8, 11, 0);
if (timeOfDay < timetable[0,0])
{
Console.WriteLine("Учебный день еще не начался");
}
else if (timeOfDay > timetable[timetable.GetLength(0)-1,1])
{
Console.WriteLine("Учебный день закончился");
}
else
{
Console.WriteLine("Текущее время: {0:00}:{1:00}", timeOfDay.Hours, timeOfDay.Minutes);
for (int para=0; para<timetable.GetLength(0); para++)
{
if (timeOfDay>=timetable[para,0] && timeOfDay<timetable[para,1])
{
TimeSpan timeLeft = timetable[para,1] - timeOfDay;
Console.WriteLine("Вывод программы: Сейчас идёт {0} пара, до окончания осталось {1} минут", para+1, timeLeft.TotalMinutes);
}
}
}