计算Instant类型的两个变量之间的差值



在我的练习中,我必须计算变量Instant inHourInstant outHour之间的差异(长持续时间(。

换句话说,我必须计算一个人在停车场停留的时间来计算价格。

这是我第一次使用Instant类,所以我有点迷路了:(

这是我的课:

public class FareCalculatorService {
public void calculateFare(Ticket ticket){
if( (ticket.getOutTime() == null) || (ticket.getOutTime().isBefore(ticket.getInTime())) ){
throw new IllegalArgumentException("Out time provided is incorrect:"+ticket.getOutTime().toString());
}
Instant inHour = ticket.getInTime();
Instant outHour = ticket.getOutTime();
//TODO: Some tests are failing here. Need to check if this logic is correct
long duration = outHour - inHour;
switch (ticket.getParkingSpot().getParkingType()){
case CAR: {
ticket.setPrice(duration * Fare.CAR_RATE_PER_HOUR);
break;
}
case BIKE: {
ticket.setPrice(duration * Fare.BIKE_RATE_PER_HOUR);
break;
}
default: throw new IllegalArgumentException("Unkown Parking Type");
}
}

谢谢你的帮助。

您可以在Instant类中使用方法public long until(Temporal endExclusive, TemporalUnit unit)

";以指定的单位计算到另一个瞬间为止的时间">

文档:
https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#until-java.time.temporal.java.time.temporal.TemporalUnit-

第二个参数(TemporalUnit单元(的定义可以在实现接口TemporalUnit的类ChronoUnit中找到。

文档:
https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html

所以你需要计算类似的时间差:

System.out.println(inHour.until(outHour, ChronoUnit.MINUTES)); 

只要稍微阅读一下这两个类的文档,在代码中实现它应该很容易。

这已经为您编写了。请参阅课程持续时间。它的方法between()可以使用两个Temporal实例(例如Instant(,并且您有它们之间的持续时间。之后,您可以获得以秒、小时或任何其他时间单位为单位的持续时间。参见方法get()getSeconds()

相关内容

  • 没有找到相关文章

最新更新