<?php
function shift_span($start, $end)
{
$time_diff = time_diff($start, $end);
$time_diff = $time_diff['hours'];
# ignore minutes, safe after we calculated difference
$start = (int) $start;
$end = (int) $end;
if($start + $time_diff <= 24)
return array($time_diff);
abs(($start + $time_diff) % 24) );
}
function time_diff($start, $end)
{
# do not ignore minutes
$diff = abs($start - $end); $hours = floor($diff / 3600); $minutes = ($diff - ($hours * 3600)) / 60;
$hours = $start > $end? 24 - $hours: $hours;
return compact('hours', 'minutes'); }
$start = '18:00:00';
$end = '03:00:00';
PD9waHAKCmZ1bmN0aW9uIHNoaWZ0X3NwYW4oJHN0YXJ0LCAkZW5kKQp7ICAgIAogICAgJHRpbWVfZGlmZiA9IHRpbWVfZGlmZigkc3RhcnQsICRlbmQpOwogICAgJHRpbWVfZGlmZiA9ICR0aW1lX2RpZmZbJ2hvdXJzJ107CgogICAgIyBpZ25vcmUgbWludXRlcywgc2FmZSBhZnRlciB3ZSBjYWxjdWxhdGVkIGRpZmZlcmVuY2UKICAgICRzdGFydCA9IChpbnQpICRzdGFydDsKICAgICRlbmQgPSAoaW50KSAkZW5kOwogICAgICAgICAgICAKICAgIGlmKCRzdGFydCArICR0aW1lX2RpZmYgPD0gMjQpCiAgICAgICAgcmV0dXJuIGFycmF5KCR0aW1lX2RpZmYpOwoKICAgIHJldHVybiBhcnJheSgKICAgICAgICBhYnMoJGVuZCAtICR0aW1lX2RpZmYpLAogICAgICAgIGFicygoJHN0YXJ0ICsgJHRpbWVfZGlmZikgJSAyNCkKICAgICk7Cn0KCmZ1bmN0aW9uIHRpbWVfZGlmZigkc3RhcnQsICRlbmQpCnsKICAgICMgZG8gbm90IGlnbm9yZSBtaW51dGVzCiAgICAkc3RhcnQgPSBzdHJ0b3RpbWUoJHN0YXJ0KTsKICAgICRlbmQgPSBzdHJ0b3RpbWUoJGVuZCk7CgogICAgJGRpZmYgPSBhYnMoJHN0YXJ0IC0gJGVuZCk7CiAgICAkaG91cnMgPSBmbG9vcigkZGlmZiAvIDM2MDApOwogICAgJG1pbnV0ZXMgPSAoJGRpZmYgLSAoJGhvdXJzICogMzYwMCkpIC8gNjA7CgogICAgJGhvdXJzID0gJHN0YXJ0ID4gJGVuZD8gMjQgLSAkaG91cnM6ICRob3VyczsKICAgIAogICAgcmV0dXJuIGNvbXBhY3QoJ2hvdXJzJywgJ21pbnV0ZXMnKTsKfQoKJHN0YXJ0ID0gJzE4OjAwOjAwJzsKJGVuZCA9ICcwMzowMDowMCc7Cgp2YXJfZHVtcChzaGlmdF9zcGFuKCRzdGFydCwgJGVuZCkpOw==