Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата Njem:
причём вот, есть живой пример сейчас: время начинается с 16:37, а заканчивается на следующий день в 19:37. Считает 13 часов, так как отнимает 14 часов, НО, 37 минут же идут вне рабочего временни, значит должно быть 12 часов 23 минуты. И вот как сделать, чтобы он когда достигал 19:00 понимал, что это уже стоп... »
Научитесь составлять словесный алгоритм, в котором будут учитываться все возможные ситуации, после этого реализуйте его в код...
Пример для одного дня, без перехода на новую дату:
Код: Выделить весь код
$start = new-timespan -h 9
$end = new-timespan -h 19
$k = new-timespan -h 14
$time = new-timespan

if (!($x = $END_TIME_TICKET.day - $START_TIME_TICKET.day)){
	if($END_TIME_TICKET.timeofday.totalhours -ge $end.totalhours -and $START_TIME_TICKET.timeofday.totalhours -lt $start.totalhours){
		$time = $end - $start
	} elseif ($END_TIME_TICKET.timeofday.totalhours -ge $end.totalhours -and $START_TIME_TICKET.timeofday.totalhours -ge $start.totalhours){
		$time = $end - $START_TIME_TICKET.timeofday
	} elseif ($END_TIME_TICKET.timeofday.totalhours -le $end.totalhours -and $START_TIME_TICKET.timeofday.totalhours -lt $start.totalhours){
		$time = $END_TIME_TICKET.timeofday - $start
	} elseif ($END_TIME_TICKET.timeofday.totalhours -le $end.totalhours -and $START_TIME_TICKET.timeofday.totalhours -ge $start.totalhours) {
		$time = $END_TIME_TICKET.timeofday - $START_TIME_TICKET.timeofday
	}
}
$time
- Здесь не учтена ситуация, когда и старт, и стоп, до начала рабочего дня, либо оба после окончания, но в этом случае, $time будет 0, только надо описать это в условиях...
В общем, остальные возможные комбинации, предлагаю обдумывать самостоятельно...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 21-12-2022 в 17:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:12, 21-12-2022 | #4