diff --git a/app/src/androidTest/java/org/tasks/time/DateTimeTest.java b/app/src/androidTest/java/org/tasks/time/DateTimeTest.java index df2c5f2fc..f6c299d40 100644 --- a/app/src/androidTest/java/org/tasks/time/DateTimeTest.java +++ b/app/src/androidTest/java/org/tasks/time/DateTimeTest.java @@ -327,4 +327,11 @@ public class DateTimeTest { new DateTime(2017, 9, 3, 0, 51, 0, 0), new DateTime(2017, 9, 3, 0, 51, 13, 427).startOfMinute()); } + + @Test + public void testEndOfMinute() { + assertEquals( + new DateTime(2017, 9, 22, 14, 47, 59, 999), + new DateTime(2017, 9, 22, 14, 47, 14, 453).endOfMinute()); + } } diff --git a/app/src/main/java/org/tasks/notifications/NotificationManager.java b/app/src/main/java/org/tasks/notifications/NotificationManager.java index 5a0fe584d..8c556c28d 100644 --- a/app/src/main/java/org/tasks/notifications/NotificationManager.java +++ b/app/src/main/java/org/tasks/notifications/NotificationManager.java @@ -31,6 +31,7 @@ import org.tasks.reminders.NotificationActivity; import org.tasks.reminders.SnoozeActivity; import org.tasks.reminders.SnoozeDialog; import org.tasks.reminders.SnoozeOption; +import org.tasks.time.DateTime; import org.tasks.ui.CheckBoxes; import java.util.ArrayList; @@ -318,7 +319,7 @@ public class NotificationManager { final String taskDescription = task.getNotes(); // update last reminder time - task.setReminderLast(when); + task.setReminderLast(new DateTime(when).endOfMinute().getMillis()); taskDao.saveExisting(task); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationManager.NOTIFICATION_CHANNEL_DEFAULT) diff --git a/app/src/main/java/org/tasks/time/DateTime.java b/app/src/main/java/org/tasks/time/DateTime.java index cc456037a..e62b1f288 100644 --- a/app/src/main/java/org/tasks/time/DateTime.java +++ b/app/src/main/java/org/tasks/time/DateTime.java @@ -85,6 +85,13 @@ public class DateTime { return new DateTime(calendar); } + public DateTime endOfMinute() { + Calendar calendar = getCalendar(); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); + return new DateTime(calendar); + } + public DateTime withMillisOfDay(int millisOfDay) { if (millisOfDay > MAX_MILLIS_PER_DAY || millisOfDay < 0) { throw new RuntimeException("Illegal millis of day: " + millisOfDay);