Wrap joda

pull/322/head
Alex Baker 9 years ago
parent f82cbeee42
commit bb5c1496ef

@ -9,7 +9,7 @@ import android.content.res.Configuration;
import android.test.AndroidTestCase;
import android.util.DisplayMetrics;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.Snippet;
import java.util.Date;
@ -195,7 +195,7 @@ public class DateUtilitiesTest extends AndroidTestCase {
public void testNotTheEndOfTheMonth() {
for (int month = 1; month <= 12; month++) {
int lastDay = new DateTime(2014, month, 1, 0, 0, 0, 0).dayOfMonth().getMaximumValue();
int lastDay = new DateTime(2014, month, 1, 0, 0, 0, 0).getNumberOfDaysInMonth();
for (int day = 1; day < lastDay; day++) {
assertFalse(isEndOfMonth(newDate(2014, month, day)));
}

@ -2,12 +2,12 @@ package com.todoroo.andlib.utility;
import android.test.AndroidTestCase;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import java.util.Locale;
import static com.todoroo.andlib.utility.DateUtilities.getRelativeDay;
import static org.joda.time.DateTime.now;
import static org.tasks.time.DateTime.now;
import static org.tasks.Freeze.freezeAt;
import static org.tasks.Freeze.thaw;

@ -2,7 +2,7 @@ package com.todoroo.astrid.data;
import android.test.AndroidTestCase;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.Snippet;
import java.util.ArrayList;

@ -2,8 +2,7 @@ package com.todoroo.astrid.gtasks.api;
import android.test.AndroidTestCase;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.tasks.time.DateTime;
import java.util.Locale;
import java.util.TimeZone;
@ -16,18 +15,18 @@ import static com.todoroo.astrid.gtasks.api.GtasksApiUtilities.unixTimeToGtasksD
public class GtasksApiUtilitiesTest extends AndroidTestCase {
private static final Locale defaultLocale = Locale.getDefault();
private static final DateTimeZone defaultDateTimeZone = DateTimeZone.getDefault();
private static final TimeZone defaultDateTimeZone = TimeZone.getDefault();
@Override
public void setUp() {
Locale.setDefault(Locale.US);
DateTimeZone.setDefault(DateTimeZone.forID("America/Chicago"));
TimeZone.setDefault(TimeZone.getTimeZone("America/Chicago"));
}
@Override
public void tearDown() {
Locale.setDefault(defaultLocale);
DateTimeZone.setDefault(defaultDateTimeZone);
TimeZone.setDefault(defaultDateTimeZone);
}
public void testConvertUnixToGoogleCompletionTime() {
@ -45,14 +44,14 @@ public class GtasksApiUtilitiesTest extends AndroidTestCase {
DateTime now = new DateTime(2014, 1, 8, 8, 53, 20, 109);
assertEquals(
new DateTime(2014, 1, 8, 0, 0, 0, 0, DateTimeZone.UTC).getMillis(),
new DateTime(2014, 1, 8, 0, 0, 0, 0, TimeZone.getTimeZone("GMT")).getMillis(),
unixTimeToGtasksDueDate(now.getMillis()).getValue());
}
public void disabled_testConvertGoogleDueDateToUnixTime() {
com.google.api.client.util.DateTime googleDueDate =
new com.google.api.client.util.DateTime(
new DateTime(2014, 1, 8, 0, 0, 0, 0).toDate(), TimeZone.getTimeZone("UTC"));
new DateTime(2014, 1, 8, 0, 0, 0, 0).toDate(), TimeZone.getTimeZone("GMT"));
assertEquals(
new DateTime(2014, 1, 8, 6, 0, 0, 0).getMillis(),

@ -5,7 +5,7 @@ import android.test.AndroidTestCase;
import com.todoroo.astrid.data.Task;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.Freeze;
import org.tasks.R;
import org.tasks.preferences.Preferences;

@ -14,7 +14,7 @@ import com.google.ical.values.WeekdayNum;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import java.text.ParseException;
import java.util.ArrayList;

@ -7,7 +7,7 @@ import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.todoroo.astrid.data.Task;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import java.text.ParseException;

@ -1,7 +1,7 @@
package org.tasks;
import org.joda.time.DateTime;
import org.joda.time.DateTimeUtils;
import org.tasks.time.DateTime;
import org.tasks.time.DateTimeUtils;
import java.util.Date;

@ -3,7 +3,7 @@ package org.tasks;
import android.annotation.SuppressLint;
import android.test.AndroidTestCase;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.preferences.Preferences;
import java.util.concurrent.TimeUnit;

@ -2,11 +2,11 @@ package org.tasks.date;
import android.test.AndroidTestCase;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.tasks.Snippet;
import org.tasks.time.DateTime;
import java.util.Date;
import java.util.TimeZone;
import static org.tasks.Freeze.freezeAt;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
@ -39,12 +39,12 @@ public class DateTimeUtilsTest extends AndroidTestCase {
}
public void testCreateNewUtcDate() {
DateTime utc = now.toDateTime(DateTimeZone.UTC);
DateTime utc = now.toUTC();
Date actual = newDateUtc(utc.getYear(), utc.getMonthOfYear(), utc.getDayOfMonth(), utc.getHourOfDay(), utc.getMinuteOfHour(), utc.getSecondOfMinute());
assertEquals(utc.getMillis(), actual.getTime());
}
public void testIllegalInstant() {
new DateTime(2015, 7, 24, 0, 0, 0, 0, DateTimeZone.forID("Africa/Cairo"));
new DateTime(2015, 7, 24, 0, 0, 0, 0, TimeZone.getTimeZone("Africa/Cairo"));
}
}

@ -0,0 +1,196 @@
package org.tasks.time;
import android.test.AndroidTestCase;
import org.tasks.Freeze;
import org.tasks.Snippet;
import java.util.TimeZone;
public class DateTimeTest extends AndroidTestCase {
public void testGetMillisOfDay() {
assertEquals(7248412, new DateTime(2015, 10, 6, 2, 0, 48, 412).getMillisOfDay());
}
public void testWithMillisOfDay() {
assertEquals(
new DateTime(2015, 10, 6, 2, 0, 48, 412),
new DateTime(2015, 10, 6, 0, 0, 0, 0).withMillisOfDay(7248412));
}
public void testPlusMonths() {
assertEquals(
new DateTime(2015, 11, 6, 2, 0, 48, 412),
new DateTime(2015, 10, 6, 2, 0, 48, 412).plusMonths(1));
}
public void testPlusMonthsWrapYear() {
assertEquals(
new DateTime(2016, 1, 6, 2, 0, 48, 412),
new DateTime(2015, 10, 6, 2, 0, 48, 412).plusMonths(3));
}
public void testGetDayOfMonth() {
assertEquals(5, new DateTime(2015, 10, 5, 0, 0, 0).getDayOfMonth());
}
public void testPlusDays() {
assertEquals(
new DateTime(2015, 10, 6, 2, 0, 48, 412),
new DateTime(2015, 10, 5, 2, 0, 48, 412).plusDays(1));
}
public void testPlusDaysWrapMonth() {
assertEquals(
new DateTime(2015, 11, 1, 2, 0, 48, 412),
new DateTime(2015, 10, 31, 2, 0, 48, 412).plusDays(1));
}
public void testMinuteOfHour() {
assertEquals(43, new DateTime(2015, 10, 5, 2, 43, 48).getMinuteOfHour());
}
public void testNumberOfDaysInMonth() {
assertEquals(31, new DateTime(2015, 1, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(28, new DateTime(2015, 2, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(31, new DateTime(2015, 3, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(30, new DateTime(2015, 4, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(31, new DateTime(2015, 5, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(30, new DateTime(2015, 6, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(31, new DateTime(2015, 7, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(31, new DateTime(2015, 8, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(30, new DateTime(2015, 9, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(31, new DateTime(2015, 10, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(30, new DateTime(2015, 11, 5, 9, 45, 34).getNumberOfDaysInMonth());
assertEquals(31, new DateTime(2015, 12, 5, 9, 45, 34).getNumberOfDaysInMonth());
}
public void testWithMillisOfSecond() {
assertEquals(
new DateTime(2015, 11, 6, 13, 34, 56, 453),
new DateTime(2015, 11, 6, 13, 34, 56, 0).withMillisOfSecond(453));
}
public void testWithHourOfDay() {
assertEquals(
new DateTime(2015, 11, 6, 23, 0, 0),
new DateTime(2015, 11, 6, 1, 0, 0).withHourOfDay(23));
}
public void testWithMinuteOfHour() {
assertEquals(
new DateTime(2015, 11, 6, 23, 13, 0),
new DateTime(2015, 11, 6, 23, 1, 0).withMinuteOfHour(13));
}
public void testWithSecondOfMinute() {
assertEquals(
new DateTime(2015, 11, 6, 23, 13, 56),
new DateTime(2015, 11, 6, 23, 13, 1).withSecondOfMinute(56));
}
public void testGetYear() {
assertEquals(2015, new DateTime(2015, 1, 1, 1, 1, 1).getYear());
}
public void testMinusMinutes() {
assertEquals(
new DateTime(2015, 11, 4, 23, 59, 0),
new DateTime(2015, 11, 5, 0, 1, 0).minusMinutes(2));
}
public void testIsBefore() {
assertTrue(new DateTime(2015, 11, 4, 23, 59, 0)
.isBefore(new DateTime(2015, 11, 4, 23, 59, 1)));
assertFalse(new DateTime(2015, 11, 4, 23, 59, 0)
.isBefore(new DateTime(2015, 11, 4, 23, 59, 0)));
}
public void testGetMonthOfYear() {
assertEquals(1, new DateTime(2015, 1, 2, 3, 4, 5).getMonthOfYear());
}
public void testIsAfter() {
assertTrue(new DateTime(2015, 11, 4, 23, 59, 1)
.isAfter(new DateTime(2015, 11, 4, 23, 59, 0)));
assertFalse(new DateTime(2015, 11, 4, 23, 59, 0)
.isAfter(new DateTime(2015, 11, 4, 23, 59, 0)));
}
public void testWithYear() {
assertEquals(
new DateTime(2016, 1, 1, 1, 1, 1),
new DateTime(2015, 1, 1, 1, 1, 1).withYear(2016));
}
public void testWithMonthOfYear() {
assertEquals(
new DateTime(2015, 1, 2, 3, 4, 5),
new DateTime(2015, 2, 2, 3, 4, 5).withMonthOfYear(1));
}
public void testGetHourOfDay() {
assertEquals(3, new DateTime(2015, 1, 2, 3, 4, 5).getHourOfDay());
}
public void testWithDayOfMonth() {
assertEquals(
new DateTime(2015, 1, 2, 3, 4, 5),
new DateTime(2015, 1, 1, 3, 4, 5).withDayOfMonth(2));
}
public void testPlusMinutes() {
assertEquals(
new DateTime(2015, 1, 2, 3, 4, 5),
new DateTime(2015, 1, 2, 2, 59, 5).plusMinutes(5));
}
public void testPlusHours() {
assertEquals(
new DateTime(2015, 1, 2, 3, 4, 5),
new DateTime(2015, 1, 1, 3, 4, 5).plusHours(24));
}
public void testPlusWeeks() {
assertEquals(
new DateTime(2015, 1, 2, 3, 4, 5),
new DateTime(2014, 12, 12, 3, 4, 5).plusWeeks(3));
}
public void testIsBeforeNow() {
Freeze.freezeAt(new DateTime(2015, 10, 6, 16, 15, 27)).thawAfter(new Snippet() {{
assertFalse(new DateTime(2015, 10, 6, 16, 15, 27).isBeforeNow());
assertTrue(new DateTime(2015, 10, 6, 16, 15, 26).isBeforeNow());
}});
}
public void testMinusMillis() {
assertEquals(
new DateTime(2015, 11, 6, 16, 18, 20, 452),
new DateTime(2015, 11, 6, 16, 18, 21, 374).minusMillis(922));
}
public void testMinusDays() {
assertEquals(
new DateTime(2015, 11, 6, 16, 19, 16),
new DateTime(2015, 12, 4, 16, 19, 16).minusDays(28));
}
public void testGetSecondOfMinute() {
assertEquals(32, new DateTime(2015, 11, 6, 16, 19, 32).getSecondOfMinute());
}
public void testToUTC() {
TimeZone def = TimeZone.getDefault();
try {
TimeZone.setDefault(TimeZone.getTimeZone("America/Chicago"));
assertEquals(
new DateTime(2015, 10, 6, 14, 45, 15, 0, TimeZone.getTimeZone("GMT")),
new DateTime(2015, 10, 6, 9, 45, 15).toUTC());
} finally {
TimeZone.setDefault(def);
}
}
}

@ -8,7 +8,7 @@ package com.todoroo.andlib.utility;
import android.content.Context;
import android.text.format.DateFormat;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import java.text.SimpleDateFormat;
@ -223,7 +223,7 @@ public class DateUtilities {
}
public static boolean isEndOfMonth(Date d) {
return d.getDate() == new DateTime(d).dayOfMonth().getMaximumValue();
return d.getDate() == new DateTime(d).getNumberOfDaysInMonth();
}
public static long getStartOfDay(long time) {

@ -18,7 +18,7 @@ import com.todoroo.andlib.data.Table;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.utility.DateUtilities;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.BuildConfig;
import org.tasks.R;

@ -48,7 +48,7 @@ public class GtasksApiUtilities {
date.setMinutes(0);
date.setSeconds(0);
date.setTime(date.getTime() - date.getTimezoneOffset() * 60000);
return new DateTime(date, TimeZone.getTimeZone("UTC"));
return new DateTime(date, TimeZone.getTimeZone("GMT"));
}
//Adjust for google's rounding

@ -13,7 +13,7 @@ import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.activities.TimePickerActivity;
import org.tasks.injection.InjectingPreferenceActivity;

@ -18,7 +18,7 @@ import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Task;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;

@ -33,7 +33,7 @@ import com.todoroo.astrid.ui.NumberPickerDialog;
import com.todoroo.astrid.ui.NumberPickerDialog.OnNumberPickedListener;
import com.todoroo.astrid.ui.PopupControlSet;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;

@ -24,7 +24,6 @@ import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Flags;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.injection.InjectingBroadcastReceiver;

@ -19,7 +19,7 @@ import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.activities.DateAndTimePickerActivity;

@ -26,7 +26,7 @@ import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;

@ -25,7 +25,7 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.voice.VoiceOutputAssistant;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.injection.ForApplication;

@ -8,7 +8,7 @@ import android.support.v4.app.FragmentManager;
import com.fourmob.datetimepicker.date.DatePickerDialog;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.dialogs.MyDatePickerDialog;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;

@ -10,7 +10,7 @@ import android.text.format.DateFormat;
import com.sleepbot.datetimepicker.time.RadialPickerLayout;
import com.sleepbot.datetimepicker.time.TimePickerDialog;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.dialogs.MyTimePickerDialog;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;

@ -1,13 +1,13 @@
package org.tasks.date;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import java.util.Date;
public class DateTimeUtils {
public static long currentTimeMillis() {
return org.joda.time.DateTimeUtils.currentTimeMillis();
return org.tasks.time.DateTimeUtils.currentTimeMillis();
}
public static Date newDate() {

@ -5,7 +5,7 @@ import android.os.Bundle;
import android.preference.Preference;
import android.widget.Toast;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.activities.TimePickerActivity;
import org.tasks.injection.InjectingPreferenceActivity;

@ -14,7 +14,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.widget.WidgetConfigActivity;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;

@ -10,7 +10,7 @@ import com.todoroo.astrid.reminders.SnoozeCallback;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.TimePickerActivity;
import org.tasks.injection.InjectingAppCompatActivity;

@ -8,7 +8,7 @@ import android.support.annotation.NonNull;
import com.todoroo.astrid.reminders.SnoozeCallback;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForApplication;

@ -1,6 +1,6 @@
package org.tasks.sync;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import java.util.HashMap;
import java.util.Map;

@ -0,0 +1,192 @@
package org.tasks.time;
import org.joda.time.DateTimeZone;
import java.util.Date;
import java.util.TimeZone;
public class DateTime {
private final org.joda.time.DateTime dateTime;
public DateTime(int year, int month, int day, int hour, int minute, int second) {
this(year, month, day, hour, minute, second, 0);
}
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond) {
this(year, month, day, hour, minute, second, millisecond, TimeZone.getDefault());
}
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, TimeZone timeZone) {
this(new org.joda.time.DateTime(year, month, day, hour, minute, second, millisecond, DateTimeZone.forTimeZone(timeZone)));
}
public static DateTime now() {
return new DateTime();
}
public DateTime() {
this(DateTimeUtils.currentTimeMillis());
}
public DateTime(org.joda.time.DateTime dateTime) {
this.dateTime = dateTime;
}
public DateTime(long timestamp) {
this(timestamp, TimeZone.getDefault());
}
public DateTime(long timestamp, TimeZone timeZone) {
dateTime = new org.joda.time.DateTime(timestamp, DateTimeZone.forTimeZone(timeZone));
}
public DateTime(Date d) {
dateTime = new org.joda.time.DateTime(d, DateTimeZone.forTimeZone(TimeZone.getDefault()));
}
public DateTime withMillisOfDay(int millisOfDay) {
return new DateTime(dateTime.withMillisOfDay(millisOfDay));
}
public long getMillis() {
return dateTime.getMillis();
}
public DateTime plusMonths(int interval) {
return new DateTime(dateTime.plusMonths(interval));
}
public int getDayOfMonth() {
return dateTime.getDayOfMonth();
}
public DateTime plusDays(int interval) {
return new DateTime(dateTime.plusDays(interval));
}
public int getMinuteOfHour() {
return dateTime.getMinuteOfHour();
}
public String toString(String format) {
return dateTime.toString(format);
}
public Date toDate() {
return dateTime.toDate();
}
public int getNumberOfDaysInMonth() {
return dateTime.dayOfMonth().getMaximumValue();
}
public DateTime withMillisOfSecond(int millisOfSecond) {
return new DateTime(dateTime.withMillisOfSecond(millisOfSecond));
}
public DateTime withHourOfDay(int hourOfDay) {
return new DateTime(dateTime.withHourOfDay(hourOfDay));
}
public DateTime withMinuteOfHour(int minuteOfHour) {
return new DateTime(dateTime.withMinuteOfHour(minuteOfHour));
}
public DateTime withSecondOfMinute(int secondOfMinute) {
return new DateTime(dateTime.withSecondOfMinute(secondOfMinute));
}
public int getYear() {
return dateTime.getYear();
}
public DateTime minusMinutes(int minutes) {
return new DateTime(dateTime.minusMinutes(minutes));
}
public boolean isBefore(DateTime dateTime) {
return this.dateTime.isBefore(dateTime.dateTime);
}
public int getMillisOfDay() {
return dateTime.getMillisOfDay();
}
public int getMonthOfYear() {
return dateTime.getMonthOfYear();
}
public boolean isAfter(DateTime dateTime) {
return this.dateTime.isAfter(dateTime.dateTime);
}
public DateTime withYear(int year) {
return new DateTime(dateTime.withYear(year));
}
public DateTime withMonthOfYear(int monthOfYear) {
return new DateTime(dateTime.withMonthOfYear(monthOfYear));
}
public int getHourOfDay() {
return dateTime.getHourOfDay();
}
public DateTime withDayOfMonth(int dayOfMonth) {
return new DateTime(dateTime.withDayOfMonth(dayOfMonth));
}
public DateTime plusMinutes(int minutes) {
return new DateTime(dateTime.plusMinutes(minutes));
}
public DateTime plusHours(int hours) {
return new DateTime(dateTime.plusHours(hours));
}
public DateTime plusWeeks(int weeks) {
return new DateTime(dateTime.plusWeeks(weeks));
}
public boolean isBeforeNow() {
return dateTime.isBefore(DateTimeUtils.currentTimeMillis());
}
public DateTime minusMillis(int millis) {
return new DateTime(dateTime.minusMillis(millis));
}
public DateTime minusDays(int days) {
return new DateTime(dateTime.minusDays(days));
}
public DateTime toUTC() {
return new DateTime(dateTime.toDateTime(DateTimeZone.UTC));
}
public int getSecondOfMinute() {
return dateTime.getSecondOfMinute();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DateTime dateTime1 = (DateTime) o;
return !(dateTime != null ? !dateTime.equals(dateTime1.dateTime) : dateTime1.dateTime != null);
}
@Override
public int hashCode() {
return dateTime != null ? dateTime.hashCode() : 0;
}
@Override
public String toString() {
return dateTime.toString();
}
}

@ -0,0 +1,19 @@
package org.tasks.time;
public class DateTimeUtils {
private static final SystemMillisProvider SYSTEM_MILLIS_PROVIDER = new SystemMillisProvider();
private static volatile MillisProvider MILLIS_PROVIDER = SYSTEM_MILLIS_PROVIDER;
public static long currentTimeMillis() {
return MILLIS_PROVIDER.getMillis();
}
public static void setCurrentMillisFixed(long millis) {
MILLIS_PROVIDER = new FixedMillisProvider(millis);
}
public static void setCurrentMillisSystem() {
MILLIS_PROVIDER = SYSTEM_MILLIS_PROVIDER;
}
}

@ -0,0 +1,15 @@
package org.tasks.time;
public class FixedMillisProvider implements MillisProvider {
private long millis;
public FixedMillisProvider(long millis) {
this.millis = millis;
}
@Override
public long getMillis() {
return millis;
}
}

@ -0,0 +1,5 @@
package org.tasks.time;
public interface MillisProvider {
long getMillis();
}

@ -0,0 +1,8 @@
package org.tasks.time;
public class SystemMillisProvider implements MillisProvider {
@Override
public long getMillis() {
return System.currentTimeMillis();
}
}

@ -20,7 +20,7 @@ import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.dialogs.MyTimePickerDialog;

@ -6,7 +6,7 @@ import android.content.res.TypedArray;
import android.preference.Preference;
import android.util.AttributeSet;
import org.joda.time.DateTime;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.activities.TimePickerActivity;

Loading…
Cancel
Save