Untitled

 avatar
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...