Untitled
unknown
java
2 years ago
2.0 kB
5
Indexable
import java.text.SimpleDateFormat; import java.util.Date; class DatesCalculation { public static int noOfDays(Date startDate, Date endDate) { long startMillis = startDate.getTime(); long endMillis = endDate.getTime(); long diff = endMillis - startMillis; return (int) (diff / (24 * 60 * 60 * 1000)); // Convert milliseconds to days } } public class CarBooking { private String plateNumber; private double dailyRate; private Date dateHired; private Date dateDue; private Date dateReturned; public CarBooking(String plateNumber, double dailyRate, String dateHired, String dateDue) { this.plateNumber = plateNumber; this.dailyRate = dailyRate; this.dateHired = parseDate(dateHired); this.dateDue = parseDate(dateDue); this.dateReturned = null; } public void setDateReturned(String dateReturned) { this.dateReturned = parseDate(dateReturned); } public double calculateCharge() { int numberOfDays = DatesCalculation.noOfDays(dateHired, dateDue); int overdueDays = DatesCalculation.noOfDays(dateDue, dateReturned); if (overdueDays > 0) { return (dailyRate * numberOfDays) + (dailyRate * overdueDays * 2); // Surplus charge for each overdue day } return dailyRate * numberOfDays; } private Date parseDate(String dateString) { try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); return format.parse(dateString); } catch (Exception e) { e.printStackTrace(); return null; } } public static void main(String[] args) { CarBooking booking = new CarBooking("ABC123", 50.0, "2023-06-03", "2023-06-10"); booking.setDateReturned("2023-06-11"); double charge = booking.calculateCharge(); System.out.println("Total charge: $" + charge); } }
Editor is loading...