Create a timepicker with an onchange event handler associated with it. In the event handler, log the .value of the timepicker. Change the value of the timepicker using the mouse. Note how .value is correct. Now change the value of the timepicker by highlighting the hours field, typing a new value, and hitting tab. Note how the event handler is called, but the value that is reported is the old value, not the new one. In short, when the value of a timepicker is changed with the keyboard, it reports its own value incorrectly. This seems like a pretty darn big bug.
This appears to have been discussed as an issue in need of a fix over two years ago: https://groups.google.com/d/topic/mozilla.dev.tech.xul/lOvK6bAwVoI/discussion
This problem applies to datepicker as well as timepicker.