private static String viaDate(float eta) {
DateFormat format = new SimpleDateFormat("H 'hours,' m 'minutes,' s 'seconds,' S 'ms'", Locale.US);
// convert to milliseconds, for some reason substract one hour, 0f results in 1:00
Date date = new Date((long) (eta * ONE_HOUR) - ONE_HOUR);
return format.format(date);
}
private static String manual(float eta) {
int hour = (int) eta;
eta = (eta - hour) * 60;
int minutes = (int) eta;
eta = (eta - minutes) * 60;
int seconds = (int) eta;
eta = (eta - seconds) * 1000;
int ms = (int) eta;
return String.format("%d hours, %d minutes, %d seconds, %d ms", hour, minutes, seconds, ms);
}
Оба приведут к чему-то вроде
"0 hours, 14 minutes, 2 seconds, 400 ms"
Если вы не хотите отображать часы только при> 0 и отображать «часы» вместо «час» при> 1, тогда возьмитеручная версия добавить немного if (hour > 0) { /* add "x hours" */ }
логики
Это может работать и с SimpleDateFormat
, но мне было лень искать какие опции форматирования у вас есть.