long timeDiff = (et - st) / 1000;
long hours = timeDiff / 3600;
In each of these lines you're doing division of two integers. In
java, integer division rounds towards zero - meaning for example that 1999/1000 evaluates to 1, rather than 1.999 or 2. This happens
before your Math.round() call; you've already lost the data at that point. Instead try:
long timeDiff = (et - st) / 1000.0;
long hours = timeDiff / 3600.0;
As long as at least one operand is a floating-point rather than integer, Java will use floating-point division, whihc should yield the results you'd expect. (Well, with some funny rounding sometimes, but that's another discussion...)