I can give you some answers based on the standard JRE. Hopefully they'll still work on the JME VM.
java.util.Data has a pair of methods named "before" and "after" that can be used for date comparisons. As far as actual "midnight" computations go, that sort of stuff is generally provided by the Calendar classes in order to allow for locale issues. Although you can probably do it "brute force" by doing a div/mod trunctation down to the last multiple of 1000*3600*24, which is the number of milliseconds in a day, allowing for the clock having started at midnight, Jan 1, 1970 (Ithink that's
Java's epoch, but I may be off).
If you want to run a timer, it's best to calculate the amount of time until the desired event, and sleep for that interval. If you continuously poll, you'll load down the CPU, and on a mobile device, that means also draining the battery charge. In the event of multiple timers, the easiest way to handle that is to compute the differentials between events and sleep for the differential periods. Be sure and query the clock when starting a new interval, however, since otherwise you could leak time. Also, there could have been a delay while higher-priority functions were handled before the sleeping
thread got awakened, so you want to correct for that.