$seconds = 3600;
echo gmdate('H:i:s', $seconds);
Ксато был почти там.
При таком подходе это немного обманывает, но я считаю, что он будет вести себя именно так, как вы хотите, с часами, минутами и секундами.
edit: и поведение будет одинаковым на всех серверах независимо от их настроек TZ