My example reads the system time every 1000ms (hour, min, sec) and then call setTime. So it should be OK? Is the system time updated via the NPT?
I would use a faster interval. Consider this scenario:
First tick: The time is 12:03:04.999, displayed as 12:03:04
Second tick: This tick is slightly delayed, so the time is 12:04:06.001, displayed as 12:03:06
As you see, it will look like it jumped two seconds at once, and it was only a 2ms delay in the timer. A 2ms delay is quite possible, especially since it's good practice to disable the timer in the timer event, so that you won't get another timer event until you are done with the previous, should something unexpected happen to delay execution.
A better solution is to fire the timer more often, say ever 100 or 200 ms, then, on each tick, check if the second has actually changed, and only redraw if it has. Will use negligible more CPU, but will update smoother.