questo pezzo è sbagliato, mktime prende "ore, minuti, secondi, mese, giorno, anno"codice:mktime($hi, $mi, date("w"), date("m"), date("y"));
Quindi hai dimenticato i secondi e messo "w" che è il giorno della settimana da 0 a 6 (0 per domenica fino a 6 per sabato).
Se volessi solo fare una differenza, potresti passare anche soltanto 0 per giorno mese anno, perchè tanto i secondi di differenza non cambierebbero.