两分钟之间的差异在几分钟内变为负面

时间:2017-03-18 19:38:00

标签: android android-timepicker

我有一个方法,它接受两个String参数。这两个字符串是24小时格式的时间值。使用来自UI的TimePicker选择Times。

该方法的目标是在几分钟内获得StartTimeEndTime之间的持续时间。

public static String getTimeDuration(String StartTime24, String EndTime24)
{
    String duration = "";

    try 
    {
        SimpleDateFormat parseFormat = new SimpleDateFormat("HH:mm");
        Date startTime = parseFormat.parse(StartTime24);
        Date endTime = parseFormat.parse(EndTime24);

        long mills = endTime.getTime() - startTime.getTime();
        long minutes = mills/(1000 * 60);

        duration = "(" + minutes + " Minutes)";
    }
    catch(ParseException ex)
    {
        // exception handling here
    }

    return duration;
}

如果两个时间都在单个日期内,则该方法可以正常工作。例如:

StartTime = 22:15
EndTime = 23:51
Output = (96 Minutes)

但我的问题是,如果结束时间是晚上12点钟之后,该方法会返回负数。例如,

StartTime = 23:51
EndTime = 0:55
Output = (-1376 Minutes)
What I want: (64 Minutes)

如何才能使持续时间正确?

2 个答案:

答案 0 :(得分:1)

由于没有使用日期,您必须先检查endTime是否小于startTime。如果是,那么您的endTime将在第二天,您必须添加1天/ 86 400 000毫秒。然后你会得到你想要的结果。

添加此条件:

if(endTime.getTime() < startTime.getTime()){  

   long mills = ((endTime.getTime() + 86400000) - startTime.getTime());  1 day = 86 400 000 mill

}

希望这有帮助

答案 1 :(得分:0)

你只是解析分钟和小时。那里没有一天。所以这两个时间都放在同一天(第一天,即1970年1月1日)。所以答案是正确的。如果您希望它将结束时间视为早于开始时间的第二天,则如果结果小于0,则将结果添加1天(1440分钟)。