I assume that part of your problem is that the "HH:MM:SS" should be "HH:mm:ss". MM:SS are month/millseconds. However when I run it everything is an hour more than it should be, which means that 21600000=07:00:00. If you get the same result I guess you can reduce all long times by 3600000(1 hour in milli).
The timestamp you are generating from that long is an offset starting at midnight January 1, 1970, in GMT. Presumably your computer's time zone is not GMT, so the time formatting is making an adjustment of a certain number of hours.
You don't want that adjustment, so set the time zone of the SimpleDateFormat to be GMT.