Правильнее всего, конечно, сконвертировать в HSL, и менять значение Hue (он даже так и называется — «цветовой оттенок»).
Формулы найдёте здесь в википедии.
Дело в переводе летнего времени в последнее воскресение марта (которое у нас отменили).
strtotime конвертирует время в unixtimestamp соответственно то прибавляя 3600, то нет.