用时差计算

时间:2018-05-17 20:23:20

标签: java

显然,已经存在关于用Java计算时间的线程。

然而,我的问题更进一步。 我想做什么:

  • 计算开始和结束时间之间的差异(ALREADY DONE)
  • 将此差异添加回开始时间

一个例子:
保罗于4:00开始工作,并于9:00结束 我希望它返回6:30(4 +(9-4)/ 2)

我的代码:

for (int i = 1, n = licenseplateList.size(); i < n; i++) 
{               
    //first look at whether it is considered as day or night time               
    try {
    String time1 = begintimeList.get(i);
    String time2 = endingtimeList.get(i);

    SimpleDateFormat format = new SimpleDateFormat("HH:mm");
    Date date1 = format.parse(time1);
    Date date2 = format.parse(time2);
    long average = ((date2.getTime() - date1.getTime())/2);

    System.out.println(average);


    }catch (Exception e) {
    }

编辑:
我也想知道我之后如何决定是白天还是晚上(我想使用开始+结束,因为如果超过18:00,我会考虑它的时间)。但是,如何在if语句中执行此操作?

1 个答案:

答案 0 :(得分:3)

这种计算更容易使用(不是那么新的)Java 8时间api

BeautifulSoup

编辑:支持跨越日期边界的范围
在这种情况下,我们需要将日期值添加到时间。这将告诉Java 22:00到01:00的范围大约是“tomorow”:

public static void main(String[] args) {
    String time1Str = "04:00";
    String time2Str = "09:00";

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
    LocalTime time1 = LocalTime.parse(time1Str, formatter);
    LocalTime time2 = LocalTime.parse(time2Str, formatter);
    Duration duration = Duration.between(time1, time2);  // 9-4
    Duration halfDuration = duration.dividedBy(2);  // divided by 2
    LocalTime result = LocalTime.from(halfDuration.addTo(time1));  // added to start time

    System.out.println(result.format(formatter));
}