@@ -0,0 +1,2487 @@
+package seedu.tasklist.model.task;%0A%0Aimport java.time.LocalDate;%0Aimport java.time.format.DateTimeFormatter;%0Aimport java.time.temporal.ChronoUnit;%0A%0Aimport seedu.tasklist.commons.exceptions.IllegalValueException;%0A%0A//@@author A0140019W%0A/**%0A * Represents a Task's date in the task list. Guarantees: immutable; is valid as%0A * declared in %7B@link #isValidLocalDate(String)%7D%0A */%0Apublic class Date %7B%0A%0A    private static final String MESSAGE_DATE_CONSTRAINTS = %22Invalid Date format%5CnDate format: DDMMYYYY%22;%0A    private static final String DATE_VALIDATION_REGEX = %22%5E(?:%5B0-9 %5D+%7C)$%22;%0A%0A    private final LocalDate localDate;%0A%0A    /**%0A     * Validates given date.%0A     *%0A     * @throws IllegalValueException%0A     *             if given date string is invalid.%0A     */%0A    public Date(String localDate) throws IllegalValueException %7B%0A        assert localDate != null;%0A        if (!isValidLocalDate(localDate)) %7B%0A            throw new IllegalValueException(MESSAGE_DATE_CONSTRAINTS);%0A        %7D%0A%0A        if (!localDate.isEmpty() && localDate.length() == 8) %7B%0A            this.localDate = LocalDate.of(Integer.parseInt(localDate.substring(4, 8)), Integer.parseInt(localDate.substring(2, 4)),%0A                    Integer.parseInt(localDate.substring(0, 2)));%0A        %7D else %7B%0A            this.localDate = null;%0A        %7D%0A    %7D%0A%0A    /**%0A     * Returns true if a given string is a valid date.%0A     */%0A    public static boolean isValidLocalDate(String test) %7B%0A        return test.matches(DATE_VALIDATION_REGEX);%0A    %7D%0A    %0A    public LocalDate getLocalDate() %7B%0A        return localDate;%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        if (localDate != null) %7B%0A            DateTimeFormatter df = DateTimeFormatter.ofPattern(%22dd-MM-yyyy%22);%0A            return df.format(localDate);%0A        %7D else %7B%0A            return %22%22;%0A        %7D%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object other) %7B%0A        return other == this // short circuit if same object%0A                %7C%7C (other instanceof Date // instanceof handles nulls%0A                        && this.localDate.equals(((Date) other).localDate)); // state%0A                                                                   // check%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        return localDate.hashCode();%0A    %7D%0A    %0A    //@@author A0153837X%0A    public String daysFromNow()%7B%0A    %09// Calculate how many days in between%0A    %09long days = ChronoUnit.DAYS.between(LocalDate.now(), localDate);%0A   %09%09return Long.toString(days);%0A    %7D%0A    %0A%7D%0A

Fix command based on feedback