diff --git a/api/src/main/java/com/todoroo/andlib/utility/DateUtilities.java b/api/src/main/java/com/todoroo/andlib/utility/DateUtilities.java index a111df494..9b2471580 100644 --- a/api/src/main/java/com/todoroo/andlib/utility/DateUtilities.java +++ b/api/src/main/java/com/todoroo/andlib/utility/DateUtilities.java @@ -9,6 +9,7 @@ import android.content.Context; import android.text.format.DateFormat; import android.text.format.DateUtils; +import org.joda.time.DateTime; import org.tasks.api.R; import java.text.ParseException; @@ -58,9 +59,14 @@ public class DateUtilities { /** Returns unixtime one month from now */ public static long oneMonthFromNow() { - Date date = newDate(); - date.setMonth(date.getMonth() + 1); - return date.getTime(); + final DateTime now = DateTime.now(); + DateTime result = now.plusMonths(1); + // preserving java.util.date behavior + int diff = now.getDayOfMonth() - result.getDayOfMonth(); + if(diff > 0) { + result = result.plusDays(diff); + } + return result.getMillis(); } /** Represents a single hour */ diff --git a/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java b/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java index ff87bcca6..04621dda6 100644 --- a/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java +++ b/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java @@ -107,6 +107,16 @@ public class DateUtilitiesTest extends TodorooRobolectricTestCase { assertEquals(0, cal.get(Calendar.SECOND)); } + @Test + public void oneMonthFromStartOfDecember() { + DateTime now = new DateTime(2013, 12, 1, 12, 19, 45, 192); + final long expected = new DateTime(2014, 1, 1, 12, 19, 45, 192).getMillis(); + + freezeAt(now).thawAfter(new Snippet() {{ + assertEquals(expected, oneMonthFromNow()); + }}); + } + @Test public void oneMonthFromEndOfDecember() { DateTime now = new DateTime(2013, 12, 31, 16, 31, 20, 597);