带负值的时间计算结果是Java

Blu*_*tle 0 java time

我想计算开始时间和结束时间之间的差异.在HH:mm格式.

例如,当开始时间22.00和结束时间是1.00第二天时,我会收到负值.

如何让程序知道第二天的结束时间?

我的剧本:

public void setBeginTijd()
{
    String dateStart = "22:00";
    String dateEnd = "1:00";

    SimpleDateFormat format = new SimpleDateFormat("HH:mm");

    Date d1 = null;
    Date d2 = null;

    try
    {
        d1 = format.parse(dateStart);
        d2 = format.parse(dateEnd);

        long diff = d2.getTime() - d1.getTime();
        long diffMinutes = diff / (60 * 1000) % 60;
        long diffHours = diff / (60 * 60 * 1000) % 24;

        System.out.println(diffMinutes);
        System.out.println(diffHours);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*o13 6

如果你可以假设,当时间是负数时,第二次必须在第二天,那么你可以简单地说

if (diff < 0)
{
    diff = (24 * 60 * 60 * 1000) + diff;
}
Run Code Online (Sandbox Code Playgroud)

编辑详细说明,也回应评论:当然这是一个非常简单的解决方案.它无法处理第二个日期是两天后的情况.它不处理DST开关.它没有处理1927年12月31日在上海时区变化.它不能替代正确建模的日期及其所有警告.这是一种尽力而为的方法,可以(可能)从给定的信息中得出什么.