Начален и краен час на седмицата

Имам този низ, който представлява начален час (в секунди от полунощ) и продължителност (в секунди) от неделя до събота.

0 0 79200 21600 36000 18000 0 0 21600 43200 0 0 0 0

Разбито

0 0 означава, че няма начало или край в неделя
79200 21600 означава начало в 22:00 часа понеделник, край в 4:00 часа във вторник
36000 18000 означава начало в 10:00 часа, вторник, край в 15:00 часа вторник
0 0 означава, че няма начало или край в сряда
/> 21600 43200 означава начало в 6 часа сутринта, четвъртък, край в 18:00 часа, четвъртък
0 0 означава без начало или край в петък
0 0 означава без начало или край в събота

Горното представлява следното

диаграма с часове дни от седмицата

Как мога да докладвам началния и крайния час за всеки съответен ден. Като се има предвид, че прозорецът може да обхваща полунощ.

В момента имам това

int monstart;
TimeSpan monstartint = TimeSpan.FromSeconds(monstart);
int monduration;
int monend = monstart + monduration;

но това показва началния час правилно, но показва края като 1.04:00:00

Бих искал нещо подобно

Понеделник 22:00:00 --> Вторник 04:00:00


person Riaan Badenhorst    schedule 03.11.2015    source източник
comment
Някаква причина да не можете просто да сравните резултата с един ден и ако е по-голям, да добавите едно към деня и да извадите едно от времевия период?   -  person Ian Mercer    schedule 03.11.2015
comment
Здравей Иън, можеш ли да ми кажеш как да го направя?   -  person Riaan Badenhorst    schedule 03.11.2015
comment
Благодаря @IanMercer. Конструирах нещо въз основа на това, което представихте. Работи добре, но ще трябва да го правя всеки ден. Не съм сигурен къде да публикувам какво съм направил. Искам да знам дали мога да конструирам метод (не съм сигурен, че така се нарича), за да мога да го извикам от основната си програма.   -  person Riaan Badenhorst    schedule 03.11.2015
comment
Ако имате актуализация на въпроса, редактирайте въпроса с актуализацията, може би под ново заглавие „Актуализация“. Ако започне да се превръща в нов въпрос, маркирайте този въпрос като отговорен и отворете нов.   -  person Ian Mercer    schedule 03.11.2015


Отговори (1)


Ако приемем, че можете да използвате string.Split и int.Parse, за да получите вашите стойности в два масива: startTimes и durations с дължина 7 всеки.

for (int day = 0; day < 7; day++)
{
   TimeSpan start = TimeSpan.FromSeconds(startTimes[day]);
   TimeSpan duration = TimeSpan.FromSeconds(durations[day]);
   TimeSpan end = start + duration;
   int endDay = day;

   if (end.TotalHours > 24)
   { 
       end = end - TimeSpan.FromHours(24);
       endDay = (endDay + 1)% 7;
   }

   // Period is from day, start to endDay, end
   // Convert day to (DayName) and output it 

} 
person Ian Mercer    schedule 03.11.2015