我不确定该怎么做getFlightTime()方法,如何以毫秒为单位获取时间?



设计两个类Flight和Itinerary。Flight类存储以下成员的航班信息:•航班号的专用字符串数据字段flightNo。

•一个名为departureTime的专用GregorianCalendar数据字段。

•一个名为arrivalTime的专用GregorianCalendar数据字段。

•创建具有指定航班号、起飞时间和到达时间的航班的构造函数。

•适当的getter和setter方法。(提示:我们需要flightNo的setter吗?(

•一个名为getFlightTime((的方法,返回以分钟为单位的飞行时间。假设出发-时间和arrivalTime在同一时区。(提示:使用方法getTimeInMillis((获取arrivalTime和departureTime(以毫秒为单位(,计算它们的相减,并传输结果从毫秒到分钟。(

import java.util.Calendar;
import java.util.GregorianCalendar;
public class TestFlightItinerary{
public static void main(String[] args) {
}
}
class Flight{
private String flightNo;
private GregorianCalendar departureTime;
private GregorianCalendar arrivalTime;
//Constructor
Flight(String SpecNo,GregorianCalendar SpecDtime, GregorianCalendar SpecAtime ){
this.flightNo = SpecNo;
this.departureTime = SpecDtime;
this.arrivalTime = SpecAtime;
}
//Getters
public String GetFlightNo() {
return flightNo;
}
public GregorianCalendar GetDtime() {
return departureTime;
}
public GregorianCalendar GetAtime() {
return arrivalTime;
}
//setters
/*public void SetFlightNo(String Number) {
flightNo = Number;
}*/
public void SetDtime(GregorianCalendar Dtime) {
departureTime = Dtime;
}
public void SetAtime(GregorianCalendar Atime) {
departureTime = Atime;
}
// getFlightTime method
public GregorianCalendar getTimeinMillis() {
}
public GregorianCalendar getFlightTime() {
}

}

飞行时间(持续时间(是指从起飞到到达时间之间的经过时间(即持续时间=到达时间-起飞时间;两者都以相同的时间单位表示(。

由于您的方法命名为getTimeinMillis,因此我猜您预期的飞行时间(持续时间(以毫秒为单位(表示为long(。因此,您应该以毫秒为单位获得两个时间(出发和到达(,以计算持续时间(如上所述(。如果不需要long,则可以始终使用不同的返回类型。

public long getTimeinMillis() {
return arrivalTime.getTimeInMillis() - departureTime.getTimeInMillis();
}

既然你已经有了以毫秒为单位的飞行时间,那么只需转换即可获得以分钟为单位的时间。您可以使用标准的Java TimeUnit to Minutes或手动计算如下:

1分钟=60秒=60*1000毫秒

因此,X毫秒中的分钟数=X/(60*1000(

public long getFlightTime() {
return TimeUnit.MILLISECONDS.toMinutes(getTimeinMillis());
//or return getTimeinMillis() / (60 * 1000);
}

以上是将分钟数返回为long,在大多数情况下,这是一种过度杀伤,因为int通常足够飞行持续时间(以分钟为单位(。当然,通过手动计算,您可以根据预期精度使用任何类型的返回值。

最新更新