Beh, se converti un orario come 9:30 in 9.30 adesso hai un numero decimale 9.3 quindi è chiaro che PHP interpreti la sottrazione come una normale operazione matematica, che ne sa che all'inizio era un orario?
Dato questo fatto, non puoi operare semplicemente in questo modo.
Quello che farei io:
- conversione entrambi orari con strtotime()
- sottrazione orario più alto - orario più basso
- divisione del numero ottenuto per 3600