Ovviamente non c'è alcun errore nelle funzioni... devi verificare le configurazioni del "server"... la differenza delle "ore" potrebbe essere dovuta all'uso dei fusi orari, mentre quella dei "minuti" probabilmente a uno sfasamento nella precisione dell'aggiornamento dell'orologio... prova anche a stampare l'ora "attuale" DA PHP per confronto.