我正在实施一些显示ETA的内容,我需要一些帮助才能正确显示。
实施例
//calculates the ETA in hours
var eta = CalculateEta(currentLocation, destination); //returns eq. 0,2169067
如何在几分钟内显示此内容,如果ETA比1小时和分钟更好?
实施例
如果我返回的ETA值等于0,2169067,我想像这样显示:
"Estimated Time Of Arrival is in 21 minutes"
如果我的ETA的值为1,502235,我想显示:
"Estimated Time Of Arrival is in 1 hour and 50 minutes"
希望这更清楚。
答案 0 :(得分:1)
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"
如果您不想仅在>时显示小时数当>时,显示“小时”而不是“小时” 1然后拿手动版添加一些if (hour > 0) { /* add "x hours" */ }
逻辑
这也适用于SimpleDateFormat
,但我懒得查找你的格式选项。