Untitled
unknown
java
3 years ago
2.0 kB
8
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...