PHP: Правильный сдвиг часов

Несколько дней назад понадобилось написать скрипт, который учитывал бы время с каким-либо интервалом. Время определить удалось, но возникла проблема как задать точность. Например время определилось как 0 часов. Тогда при точности +- 2 будет интервал от -2 до 2 часов. Но что такое минус 2 часа? Такого не бывает! Для исправления этой ситуации потребовалось написать функцию, которая бы правильно считала время.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function TimeChange($hour, $shift)
{
    if ($shift + $hour > 24)
    {
        return abs($hour + $shift) - 24;
    }
    else if ($shift + $hour < 0)
    {
        return 24 - abs($hour + $shift);
    }
    else
    {
        if ($shift + $hour == 24)
            return 0;
        return $shift + $hour;
    }
}
function TimeChange($hour, $shift)
{
    if ($shift + $hour > 24)
    {
    	return abs($hour + $shift) - 24;
    }
    else if ($shift + $hour < 0)
    {
    	return 24 - abs($hour + $shift);
    }
    else
    {
    	if ($shift + $hour == 24)
    		return 0;
    	return $shift + $hour;
    }
}

Функция принимает текущий час (24-часовой формат) и число, на которое нужно сдвинуть часы.

 

Добавить комментарий