第5章 日付と時刻の新たな API : 問題 11 : 飛行時間
問題
帰りの便は、フランクフルトを14時5分に出発し、ロサンジェルスに16時40分に到着する
飛行時間は何時間何分か?
個別に計算するのではなく、このような時刻計算を処理できるプログラムを書け
解答
問題10で定義したFlight
クラスにメソッドを追加しよう
■ Flight
クラス
/** * コンストラクタ * * @param departurePlace 出発地 * @param departureTime 出発時間(出発地での時間) * @param arrivalPlace 到着地 * @param arrivalTime 到着時間(到着地での時間) */ public Flight(String departurePlace, LocalDateTime departureTime, String arrivalPlace , LocalDateTime arrivalTime) { this.departurePlace = departurePlace; ZoneId zone = ZoneId.of(departurePlace, aliasMap); this.departureTime = ZonedDateTime.of(departureTime, zone); this.arrivalPlace = arrivalPlace; zone = ZoneId.of(arrivalPlace, aliasMap); this.arrivalTime = ZonedDateTime.of(arrivalTime, zone); } /** * 飛行時間の取得 */ public Duration getFlightTime() { return Duration.between(departureTime, arrivalTime); }
じゃあ、飛行時間は
Flight flight = new Flight( "フランクフルト", LocalDateTime.of(LocalDate.now(), LocalTime.of(14, 5)), "ロサンジェルス", LocalDateTime.of(LocalDate.now(), LocalTime.of(16, 40)) ); System.out.println(flight.getFlightTime());
11時間35分である