Android 预计到达时间

Android 预计到达时间,android,math,Android,Math,我正在实施的东西,将显示埃塔,我需要一些帮助来正确显示这一点 范例 //calculates the ETA in hours var eta = CalculateEta(currentLocation, destination); //returns eq. 0,2169067 如何以分钟为单位显示此信息?如果预计到达时间大于1,则以小时和分钟为单位显示 范例 //calculates the ETA in hours var eta = CalculateEta(currentLocat

我正在实施的东西,将显示埃塔,我需要一些帮助来正确显示这一点

范例

//calculates the ETA in hours
var eta = CalculateEta(currentLocation, destination); //returns eq. 0,2169067
如何以分钟为单位显示此信息?如果预计到达时间大于1,则以小时和分钟为单位显示

范例

//calculates the ETA in hours
var eta = CalculateEta(currentLocation, destination); //returns eq. 0,2169067
如果我返回的ETA值等于02169067,我希望如下显示:

"Estimated Time Of Arrival is in 21 minutes"
如果我的ETA值为1502235,我希望显示:

"Estimated Time Of Arrival is in 1 hour and 50 minutes"
希望这能让事情变得更清楚

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){/*添加“x小时”*/}
logic


这可能也适用于
SimpleDataFormat
,但我太懒了,无法查看您有哪些格式选项。

您到底想要什么,显示(打印)它?您的问题不是很清楚,是不是您在将CalculateEta()的返回值转换为小时、分钟和秒时遇到问题?是的,我将用一个仍然困惑的示例更新我的问题,返回值的格式是什么??是字符串吗?CalculateData的返回值是浮点值