Java 在实际时间之后设置新时间

Java 在实际时间之后设置新时间,java,date,time,Java,Date,Time,我正在尝试创建一个打印方法,例如,实际到达时间(现在),然后打印我想要设置的出发时间加上与第一个时间相比的3分钟 public void updateTimes(){ SimpleDateFormat sdf = new SimpleDateFormat("H:mm"); this.arrivalTime = new Date(); this.departureTime = this.arrivalTime.plusMinutes(3); } 出发时间没有按计划进行。

我正在尝试创建一个打印方法,例如,实际到达时间(现在),然后打印我想要设置的出发时间加上与第一个时间相比的3分钟

public void updateTimes(){
    SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
    this.arrivalTime = new Date();
    this.departureTime = this.arrivalTime.plusMinutes(3);
}
出发时间没有按计划进行。 欢迎任何帮助。

没有
plusMinutes

如果使用Java 8和库,效果会更好:

LocalTime arrivalTime = LocalTime.now();//Current time
LocalTime departureTime = arrivalTime.plusMinutes(3);//plus 3 minutes to the time

//Then you can format the time
String result = departureTime.format(DateTimeFormatter.ofPattern("H:mm"));

另一个使用日历的解决方案如下所示:

Calendar cal = Calendar.getInstance();
cal.setTime(arrivalTime); // only if different from "now"
cal.add(Calendar.MINUTE, 3);
departureTime = cal.getTime();

我认为你可以做如下事情:

    SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
    Date date = new Date();

    System.out.println("arrival time = " + sdf.format(date));

    int min = date.getMinutes();
    date.setMinutes(min+3);

    System.out.println("departure time = " + sdf.format(date));

“出发时间没有按计划进行”-啊哈!?它以什么方式不起作用?
java.util.Date
没有
plusMinutes
方法。此外,日期不能从概念上封装有关分钟的信息。日期就是天、月、年。@Michael告诉你第二点;
java.util.Date
实际上包含日期和时间信息。@marstran
java.util.Date
设计得非常糟糕。你的观点是什么?不仅
Date
早已过时,
SimpleDateFormat
也是如此,甚至更麻烦。我建议你把这两门课都扔掉,寻找解决你任务的方法。。API更好,它们是不可变的和线程安全的。仅供参考,像、
java.text.simpleDataFormat
这样麻烦的旧日期时间类现在被内置在java 8和java 9中的类所取代。看,你当然是对的。但是仍然有很多遗留代码,我认为知道如何使用JDK7也很好。