Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

When comparing dates, put the objects that fall in the last week on the list

I am working on a project where the user adds a completion date when adding a book. I save it in an object called FinishedBooks with the completion date and other data of the book. I list these books in another activity. I have a filter button in the corner of the screen. This button will list the books that have been finished in the last week. I wrote a method for this before, here is my method:

private void lastWeekFilter(List<FinishedBooks> finishedBooks) {
    List<FinishedBooks> lastWeekList = new ArrayList<>();

    // take now time
    long currentTimeMillis = System.currentTimeMillis();

    // Calculate the time one week ago
    long oneWeekMillis = 7L * 24L * 60L * 60L * 1000L;
    long oneWeekAgoMillis = currentTimeMillis - oneWeekMillis;

    // Check each item in the list
    for (FinishedBooks book : finishedBooks) {
        long endDateMillis = book.endDate;

        System.out.println("End Date: " + endDateMillis);
        System.out.println("One Week Ago Millis: " + oneWeekAgoMillis);
        System.out.println("******************************");

        // If the due date falls within the last 1 week, add the item to the filteredList
        if (endDateMillis >= oneWeekAgoMillis && endDateMillis <= currentTimeMillis) {
            lastWeekList.add(book);
        }
    }
    finishedBooksAdapter.setLastWeekFilter(lastWeekList);
}

My code didn’t work as I wanted, it never enters the if block. So I used a System.out.println(); to see if the values meet the if conditions. Here’s my logcat output:

I/System.out: End Date: 1684159940
I/System.out: One Week Ago Millis: 1683740684856
I/System.out: ******************************
I/System.out: End Date: 1683987159
I/System.out: One Week Ago Millis: 1683740684856
I/System.out: ******************************

Although my incoming data meets the conditions, the object I want is not included in the list. It does not enter the if block. lastWeekList.size() returns 0.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I am grateful for your help in advance.

I was expecting the conditions to be met and these objects to be listed, but the list remains empty.

>Solution :

The date from the book -which is really a timestamp- doesn’t include milliseconds. Notice that the length has 3 less digits. Multiply it by 1000 to make it comparable to the other timestamp.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading