Converting Date to DateTime

pull/322/head
Alex Baker 9 years ago
parent ddfee16bde
commit 9321e8262c

@ -12,15 +12,14 @@ import android.test.AndroidTestCase;
import android.util.DisplayMetrics;
import org.tasks.R;
import org.tasks.time.DateTime;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
/**
* Tests translations for consistency with the default values. You must
@ -225,7 +224,7 @@ abstract public class TranslationTests extends AndroidTestCase {
final StringBuilder failures = new StringBuilder();
final int[] dateStrings = getDateFormatStrings();
final Date date = newDate();
final DateTime date = newDateTime();
forEachLocale(new Runnable() {
public void run() {
@ -234,7 +233,7 @@ abstract public class TranslationTests extends AndroidTestCase {
try {
String string = r.getString(dateString);
try {
new SimpleDateFormat(string).format(date);
date.toString(string);
} catch (Exception e) {
String name = r.getResourceName(dateString);
failures.append(String.format("%s: invalid format string '%s': %s\n",

@ -9,10 +9,9 @@ import android.content.res.Configuration;
import android.test.AndroidTestCase;
import android.util.DisplayMetrics;
import org.tasks.time.DateTime;
import org.tasks.Snippet;
import org.tasks.time.DateTime;
import java.util.Date;
import java.util.Locale;
import static com.todoroo.andlib.utility.DateUtilities.addCalendarMonthsToUnixtime;
@ -22,10 +21,10 @@ import static com.todoroo.andlib.utility.DateUtilities.getStartOfDay;
import static com.todoroo.andlib.utility.DateUtilities.getTimeString;
import static com.todoroo.andlib.utility.DateUtilities.getWeekday;
import static com.todoroo.andlib.utility.DateUtilities.getWeekdayShort;
import static com.todoroo.andlib.utility.DateUtilities.isEndOfMonth;
import static com.todoroo.andlib.utility.DateUtilities.oneMonthFromNow;
import static org.tasks.Freeze.freezeAt;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class DateUtilitiesTest extends AndroidTestCase {
@ -63,18 +62,18 @@ public class DateUtilitiesTest extends AndroidTestCase {
public void testTimeString() {
forEachLocale(new Runnable() {
public void run() {
Date d = newDate();
DateTime d = newDateTime();
DateUtilities.is24HourOverride = false;
for (int i = 0; i < 24; i++) {
d.setHours(i);
getTimeString(getContext(), new DateTime(d));
d = d.withHourOfDay(i);
getTimeString(getContext(), d);
}
DateUtilities.is24HourOverride = true;
for (int i = 0; i < 24; i++) {
d.setHours(i);
getTimeString(getContext(), new DateTime(d));
d = d.withHourOfDay(i);
getTimeString(getContext(), d);
}
}
});
@ -83,10 +82,10 @@ public class DateUtilitiesTest extends AndroidTestCase {
public void testDateString() {
forEachLocale(new Runnable() {
public void run() {
Date d = newDate();
DateTime d = newDateTime();
for (int i = 0; i < 12; i++) {
d.setMonth(i);
d = d.withMonthOfYear(i);
getDateString(d);
}
}
@ -111,18 +110,18 @@ public class DateUtilitiesTest extends AndroidTestCase {
}
public void testGetDateStringWithYear() {
assertEquals("Jan 4, 2014", getDateString(new DateTime(2014, 1, 4, 0, 0, 0).toDate()));
assertEquals("Jan 4, 2014", getDateString(new DateTime(2014, 1, 4, 0, 0, 0)));
}
public void testGetDateStringHidingYear() {
freezeAt(newDate(2014, 1, 1)).thawAfter(new Snippet() {{
assertEquals("Jan 1", getDateStringHideYear(newDate()));
assertEquals("Jan 1", getDateStringHideYear(newDateTime()));
}});
}
public void testGetDateStringWithDifferentYear() {
freezeAt(newDate(2013, 12, 31)).thawAfter(new Snippet() {{
assertEquals("Jan 1\n2014", getDateStringHideYear(newDate(2014, 1, 1)));
assertEquals("Jan 1\n2014", getDateStringHideYear(new DateTime(2014, 1, 1, 0, 0, 0)));
}});
}
@ -178,35 +177,6 @@ public class DateUtilitiesTest extends AndroidTestCase {
getStartOfDay(now.getMillis()));
}
public void testCheckEndOfMonth() {
assertTrue(isEndOfMonth(newDate(2014, 1, 31)));
assertTrue(isEndOfMonth(newDate(2014, 2, 28)));
assertTrue(isEndOfMonth(newDate(2014, 3, 31)));
assertTrue(isEndOfMonth(newDate(2014, 4, 30)));
assertTrue(isEndOfMonth(newDate(2014, 5, 31)));
assertTrue(isEndOfMonth(newDate(2014, 6, 30)));
assertTrue(isEndOfMonth(newDate(2014, 7, 31)));
assertTrue(isEndOfMonth(newDate(2014, 8, 31)));
assertTrue(isEndOfMonth(newDate(2014, 9, 30)));
assertTrue(isEndOfMonth(newDate(2014, 10, 31)));
assertTrue(isEndOfMonth(newDate(2014, 11, 30)));
assertTrue(isEndOfMonth(newDate(2014, 12, 31)));
}
public void testNotTheEndOfTheMonth() {
for (int month = 1; month <= 12; month++) {
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)));
}
}
}
public void testCheckEndOfMonthDuringLeapYear() {
assertFalse(isEndOfMonth(newDate(2016, 2, 28)));
assertTrue(isEndOfMonth(newDate(2016, 2, 29)));
}
public void testGetWeekdayLongString() {
assertEquals("Sunday", getWeekday(newDate(2013, 12, 29)));
assertEquals("Monday", getWeekday(newDate(2013, 12, 30)));

@ -25,7 +25,7 @@ import static com.todoroo.astrid.data.Task.createDueDate;
import static com.todoroo.astrid.data.Task.hasDueTime;
import static org.tasks.Freeze.freezeAt;
import static org.tasks.Freeze.thaw;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class TaskTest extends AndroidTestCase {

@ -15,7 +15,7 @@ import static com.natpryce.makeiteasy.MakeItEasy.with;
import static java.util.Arrays.asList;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.makers.GtaskListMaker.LAST_SYNC;
import static org.tasks.makers.GtaskListMaker.NAME;
import static org.tasks.makers.GtaskListMaker.REMOTE_ID;

@ -4,6 +4,7 @@ import android.test.AndroidTestCase;
import org.tasks.time.DateTime;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
@ -51,7 +52,7 @@ public class GtasksApiUtilitiesTest extends AndroidTestCase {
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("GMT"));
new Date(new DateTime(2014, 1, 8, 0, 0, 0, 0).getMillis()), TimeZone.getTimeZone("GMT"));
assertEquals(
new DateTime(2014, 1, 8, 6, 0, 0, 0).getMillis(),

@ -17,7 +17,7 @@ import javax.inject.Inject;
import static org.tasks.Freeze.freezeClock;
import static org.tasks.RemoteModelHelpers.asQueryProperties;
import static org.tasks.RemoteModelHelpers.compareRemoteModel;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class TaskTest extends InjectingTestCase {

@ -19,9 +19,9 @@ import org.tasks.time.DateTime;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class AdvancedRepeatTest extends AndroidTestCase {
@ -62,11 +62,11 @@ public class AdvancedRepeatTest extends AndroidTestCase {
long dayWithTime = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, new DateTime(2010, 8, 1, 10, 4, 0).getMillis());
task.setDueDate(dayWithTime);
Date todayWithTime = newDate();
todayWithTime.setHours(10);
todayWithTime.setMinutes(4);
todayWithTime.setSeconds(1);
long nextDayWithTimeLong = todayWithTime.getTime();
DateTime todayWithTime = newDateTime()
.withHourOfDay(10)
.withMinuteOfHour(4)
.withSecondOfMinute(1);
long nextDayWithTimeLong = todayWithTime.getMillis();
nextDayWithTimeLong += DateUtilities.ONE_DAY;
nextDayWithTimeLong = nextDayWithTimeLong / 1000L * 1000;

@ -5,7 +5,7 @@ import org.tasks.time.DateTimeUtils;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class Freeze {

@ -9,14 +9,13 @@ import java.util.Date;
import java.util.TimeZone;
import static org.tasks.Freeze.freezeAt;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateUtc;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class DateTimeUtilsTest extends AndroidTestCase {
private final DateTime now = new DateTime(2014, 1, 1, 15, 17, 53, 0);
private final Date nowAsDate = new Date(114, 0, 1, 15, 17, 53);
public void testGetCurrentTime() {
freezeAt(now).thawAfter(new Snippet() {{
@ -24,24 +23,14 @@ public class DateTimeUtilsTest extends AndroidTestCase {
}});
}
public void testGetNowAsDate() {
freezeAt(now).thawAfter(new Snippet() {{
assertEquals(nowAsDate, newDate());
}});
}
public void testCreateNewDate() {
assertEquals(new Date(114, 0, 1), newDate(2014, 1, 1));
}
public void testCreateNewDateTime() {
assertEquals(new Date(114, 0, 1, 15, 17, 53), new DateTime(2014, 1, 1, 15, 17, 53).toDate());
}
public void testCreateNewUtcDate() {
DateTime utc = now.toUTC();
Date actual = newDateUtc(utc.getYear(), utc.getMonthOfYear(), utc.getDayOfMonth(), utc.getHourOfDay(), utc.getMinuteOfHour(), utc.getSecondOfMinute());
assertEquals(utc.getMillis(), actual.getTime());
DateTime actual = newDateUtc(utc.getYear(), utc.getMonthOfYear(), utc.getDayOfMonth(), utc.getHourOfDay(), utc.getMinuteOfHour(), utc.getSecondOfMinute());
assertEquals(utc.getMillis(), actual.getMillis());
}
public void testIllegalInstant() {

@ -8,7 +8,7 @@ import com.natpryce.makeiteasy.PropertyLookup;
import com.natpryce.makeiteasy.PropertyValue;
import static com.natpryce.makeiteasy.Property.newProperty;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.makers.Maker.make;
public class RemoteGtaskListMaker {

@ -16,12 +16,10 @@ import org.tasks.preferences.Preferences;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class BackupServiceTests extends DatabaseTestCase {
@ -97,8 +95,7 @@ public class BackupServiceTests extends DatabaseTestCase {
// create some backup files
for (int i = 0; i < 10; i++) {
DateFormat df = new SimpleDateFormat("MMdd-HHmm");
String name = String.format("auto.%02d%s.xml", i, df.format(newDate()));
String name = String.format("auto.%02d%s.xml", i, newDateTime().toString("MMdd-HHmm"));
File tempFile = new File(temporaryDirectory, name);
tempFile.createNewFile();
}

@ -50,6 +50,36 @@ public class DateTimeTest extends AndroidTestCase {
assertEquals(43, new DateTime(2015, 10, 5, 2, 43, 48).getMinuteOfHour());
}
public void testIsEndOfMonth() {
assertTrue(new DateTime(2014, 1, 31, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 2, 28, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 3, 31, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 4, 30, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 5, 31, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 6, 30, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 7, 31, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 8, 31, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 9, 30, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 10, 31, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 11, 30, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2014, 12, 31, 0, 0, 0).isLastDayOfMonth());
}
public void testNotTheEndOfTheMonth() {
for (int month = 1; month <= 12; month++) {
int lastDay = new DateTime(2014, month, 1, 0, 0, 0, 0).getNumberOfDaysInMonth();
for (int day = 1; day < lastDay; day++) {
assertFalse(new DateTime(2014, month, day, 0, 0, 0).isLastDayOfMonth());
}
}
}
public void testCheckEndOfMonthDuringLeapYear() {
assertFalse(new DateTime(2016, 2, 28, 0, 0, 0).isLastDayOfMonth());
assertTrue(new DateTime(2016, 2, 29, 0, 0, 0).isLastDayOfMonth());
}
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());

@ -16,7 +16,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
@ -103,20 +103,20 @@ public class DateUtilities {
}
public static String getLongDateString(Date date) {
return getDateString(new SimpleDateFormat("MMMM"), date);
public static String getLongDateString(DateTime date) {
return getDateString("MMMM", date);
}
/**
* @param date date to format
* @return date, with month, day, and year
*/
public static String getDateString(Date date) {
return getDateString(new SimpleDateFormat("MMM"), date);
public static String getDateString(DateTime date) {
return getDateString("MMM", date);
}
private static String getDateString(SimpleDateFormat simpleDateFormat, Date date) {
String month = simpleDateFormat.format(date);
private static String getDateString(String simpleDateFormat, DateTime date) {
String month = date.toString(simpleDateFormat);
String value;
String standardDate;
Locale locale = Locale.getDefault();
@ -128,29 +128,29 @@ public class DateUtilities {
}
value += ", yyyy";
if (arrayBinaryContains(locale.getLanguage(), "ja", "zh")){
standardDate = new SimpleDateFormat(value).format(date).replace("#", month).replace("$", "\u65E5"); //$NON-NLS-1$
standardDate = date.toString(value).replace("#", month).replace("$", "\u65E5"); //$NON-NLS-1$
}else if ("ko".equals(Locale.getDefault().getLanguage())){
standardDate = new SimpleDateFormat(value).format(date).replace("#", month).replace("$", "\uC77C"); //$NON-NLS-1$
standardDate = date.toString(value).replace("#", month).replace("$", "\uC77C"); //$NON-NLS-1$
}else{
standardDate = new SimpleDateFormat(value).format(date).replace("#", month).replace("$", "");
standardDate = date.toString(value).replace("#", month).replace("$", "");
}
return standardDate;
}
public static String getLongDateStringHideYear(Date date) {
return getDateStringHideYear(new SimpleDateFormat("MMMM"), date);
public static String getLongDateStringHideYear(DateTime date) {
return getDateStringHideYear("MMMM", date);
}
/**
* @param date date to format
* @return date, with month, day, and year
*/
public static String getDateStringHideYear(Date date) {
return getDateStringHideYear(new SimpleDateFormat("MMM"), date);
public static String getDateStringHideYear(DateTime date) {
return getDateStringHideYear("MMM", date);
}
private static String getDateStringHideYear(SimpleDateFormat simpleDateFormat, Date date) {
String month = simpleDateFormat.format(date);
private static String getDateStringHideYear(String simpleDateFormat, DateTime date) {
String month = date.toString(simpleDateFormat);
String value;
Locale locale = Locale.getDefault();
if (arrayBinaryContains(locale.getLanguage(), "ja", "ko", "zh")
@ -160,17 +160,17 @@ public class DateUtilities {
value = "d '#'";
}
if (date.getYear() != (newDate()).getYear()) {
if (date.getYear() != (newDateTime()).getYear()) {
value = value + "\nyyyy";
}
if (arrayBinaryContains(locale.getLanguage(), "ja", "zh")) //$NON-NLS-1$
{
return new SimpleDateFormat(value).format(date).replace("#", month) + "\u65E5"; //$NON-NLS-1$
return date.toString(value).replace("#", month) + "\u65E5"; //$NON-NLS-1$
} else if ("ko".equals(Locale.getDefault().getLanguage())) //$NON-NLS-1$
{
return new SimpleDateFormat(value).format(date).replace("#", month) + "\uC77C"; //$NON-NLS-1$
return date.toString(value).replace("#", month) + "\uC77C"; //$NON-NLS-1$
} else {
return new SimpleDateFormat(value).format(date).replace("#", month);
return date.toString(value).replace("#", month);
}
}
@ -193,7 +193,7 @@ public class DateUtilities {
}
public static String getDateStringWithTime(Context context, DateTime date) {
return getDateString(date.toDate()) + " " + getTimeString(context, date);
return getDateString(date) + " " + getTimeString(context, date);
}
/**
@ -219,11 +219,7 @@ public class DateUtilities {
return abbreviated ? DateUtilities.getWeekdayShort(newDate(date)) : DateUtilities.getWeekday(newDate(date));
}
return DateUtilities.getDateStringHideYear(newDate(date));
}
public static boolean isEndOfMonth(Date d) {
return d.getDate() == new DateTime(d).getNumberOfDaysInMonth();
return DateUtilities.getDateStringHideYear(newDateTime(date));
}
public static long getStartOfDay(long time) {

@ -7,9 +7,7 @@ package com.todoroo.astrid.api;
import com.todoroo.andlib.utility.DateUtilities;
import java.util.Date;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
/**
* PermaSql allows for creating SQL statements that can be saved and used
@ -81,11 +79,12 @@ public final class PermaSql {
}
private static String replaceEodValues(String value) {
Date date = newDate();
date.setHours(23);
date.setMinutes(59);
date.setSeconds(59);
long time = date.getTime() / 1000l * 1000l; // chop milliseconds off
long time = newDateTime()
.withHourOfDay(23)
.withMinuteOfHour(59)
.withSecondOfMinute(59)
.withMillisOfSecond(0)
.getMillis();
value = value.replace(VALUE_EOD_YESTERDAY, Long.toString(time - DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD, Long.toString(time));
value = value.replace(VALUE_EOD_TOMORROW, Long.toString(time + DateUtilities.ONE_DAY));
@ -96,11 +95,12 @@ public final class PermaSql {
}
private static String replaceNoonValues(String value) {
Date date = newDate();
date.setHours(12);
date.setMinutes(0);
date.setSeconds(0);
long time = date.getTime() / 1000l * 1000l; // chop milliseconds off
long time = newDateTime()
.withHourOfDay(12)
.withMinuteOfHour(0)
.withSecondOfMinute(0)
.withMillisOfSecond(0)
.getMillis();
value = value.replace(VALUE_NOON_YESTERDAY, Long.toString(time - DateUtilities.ONE_DAY));
value = value.replace(VALUE_NOON, Long.toString(time));
value = value.replace(VALUE_NOON_TOMORROW, Long.toString(time + DateUtilities.ONE_DAY));

@ -38,12 +38,10 @@ import org.xmlpull.v1.XmlSerializer;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class TasksXmlExporter {
@ -374,7 +372,6 @@ public class TasksXmlExporter {
}
private static String getDateForExport() {
DateFormat df = new SimpleDateFormat("yyMMdd-HHmm");
return df.format(newDate());
return newDateTime().toString("yyMMdd-HHmm");
}
}

@ -1,7 +1,6 @@
package com.todoroo.astrid.gcal;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
@ -12,10 +11,6 @@ import android.widget.TextView;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.BasicPreferences;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.FilterWithCustomIntent;
@ -25,13 +20,16 @@ import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.tags.TagFilterExposer;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.ResourceResolver;
import org.tasks.scheduling.AlarmManager;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class CalendarReminderActivity extends InjectingAppCompatActivity {
@ -195,7 +193,7 @@ public class CalendarReminderActivity extends InjectingAppCompatActivity {
@Override
public void onClick(DialogInterface dialog, int which) {
createNewList(tag.getName() + " "
+ DateUtilities.getDateStringHideYear(newDate(startTime)));
+ DateUtilities.getDateStringHideYear(newDateTime(startTime)));
}
})
.setNegativeButton(R.string.CRA_use_existing, new DialogInterface.OnClickListener() {

@ -19,7 +19,7 @@ import java.util.Set;
import javax.inject.Inject;
import static com.google.common.collect.Lists.newArrayList;
import static org.tasks.date.DateTimeUtils.printTimestamp;
import static org.tasks.time.DateTimeUtils.printTimestamp;
public class GtasksListService {

@ -32,7 +32,7 @@ import java.util.Random;
import javax.inject.Inject;
import javax.inject.Singleton;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDateTime;
/**

@ -475,8 +475,8 @@ public class RepeatControlSet extends PopupControlSet {
private String getDisplayString() {
StringBuilder displayString = new StringBuilder();
Date d = newDate(repeatUntilValue);
if (d.getTime() > 0) {
DateTime d = newDateTime(repeatUntilValue);
if (d.getMillis() > 0) {
displayString.append(DateUtilities.getDateStringHideYear(d));
if (Task.hasDueTime(repeatUntilValue)) {
displayString.append(", "); //$NON-NLS-1$ //$NON-NLS-2$

@ -27,12 +27,12 @@ import com.todoroo.astrid.utility.Flags;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.time.DateTime;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
@ -123,7 +123,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
RRule rrule = initRRule(recurrence);
// initialize startDateAsDV
Date original = setUpStartDate(task, repeatAfterCompletion, rrule.getFreq());
DateTime original = setUpStartDate(task, repeatAfterCompletion, rrule.getFreq());
DateValue startDateAsDV = setUpStartDateAsDV(task, original);
if(rrule.getFreq() == Frequency.HOURLY || rrule.getFreq() == Frequency.MINUTELY) {
@ -137,10 +137,10 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
}
}
private static long handleWeeklyRepeatAfterComplete(RRule rrule, Date original,
private static long handleWeeklyRepeatAfterComplete(RRule rrule, DateTime original,
boolean hasDueTime) {
List<WeekdayNum> byDay = rrule.getByDay();
long newDate = original.getTime();
long newDate = original.getMillis();
newDate += DateUtilities.ONE_WEEK * (rrule.getInterval() - 1);
Calendar date = Calendar.getInstance();
date.setTimeInMillis(newDate);
@ -160,10 +160,10 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
}
}
private static long handleMonthlyRepeat(Date original, DateValue startDateAsDV, boolean hasDueTime, RRule rrule) {
if (DateUtilities.isEndOfMonth(original)) {
private static long handleMonthlyRepeat(DateTime original, DateValue startDateAsDV, boolean hasDueTime, RRule rrule) {
if (original.isLastDayOfMonth()) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(original.getTime());
cal.setTimeInMillis(original.getMillis());
int interval = rrule.getInterval();
@ -198,7 +198,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
return next;
}
private static long invokeRecurrence(RRule rrule, Date original, DateValue startDateAsDV) {
private static long invokeRecurrence(RRule rrule, DateTime original, DateValue startDateAsDV) {
long newDueDate = -1;
RecurrenceIterator iterator = RecurrenceIteratorFactory.createRecurrenceIterator(rrule,
startDateAsDV, TimeZone.getDefault());
@ -217,7 +217,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
newDueDate = buildNewDueDate(original, nextDate);
// detect if we finished
if(newDueDate > original.getTime()) {
if(newDueDate > original.getMillis()) {
break;
}
}
@ -225,18 +225,19 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
}
/** Compute long due date from DateValue */
private static long buildNewDueDate(Date original, DateValue nextDate) {
private static long buildNewDueDate(DateTime original, DateValue nextDate) {
long newDueDate;
if(nextDate instanceof DateTimeValueImpl) {
DateTimeValueImpl newDateTime = (DateTimeValueImpl)nextDate;
Date date = newDateUtc(newDateTime.year(), newDateTime.month(),
DateTimeValueImpl newDateTime = (DateTimeValueImpl) nextDate;
DateTime date = newDateUtc(newDateTime.year(), newDateTime.month(),
newDateTime.day(), newDateTime.hour(),
newDateTime.minute(), newDateTime.second());
newDateTime.minute(), newDateTime.second())
.toLocal();
// time may be inaccurate due to DST, force time to be same
date.setHours(original.getHours());
date.setMinutes(original.getMinutes());
newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME,
date.getTime());
date = date
.withHourOfDay(original.getHourOfDay())
.withMinuteOfHour(original.getMinuteOfHour());
newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, date.getMillis());
} else {
newDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY,
newDate(nextDate.year(), nextDate.month(), nextDate.day()).getTime());
@ -258,37 +259,38 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
}
/** Set up repeat start date */
private static Date setUpStartDate(Task task, boolean repeatAfterCompletion, Frequency frequency) {
Date startDate = newDate();
private static DateTime setUpStartDate(Task task, boolean repeatAfterCompletion, Frequency frequency) {
DateTime startDate = newDateTime();
if(task.hasDueDate()) {
Date dueDate = newDate(task.getDueDate());
DateTime dueDate = newDateTime(task.getDueDate());
if(repeatAfterCompletion) {
startDate = newDate(task.getCompletionDate());
startDate = newDateTime(task.getCompletionDate());
} else {
startDate = dueDate;
}
if(task.hasDueTime() && frequency != Frequency.HOURLY && frequency != Frequency.MINUTELY) {
startDate.setHours(dueDate.getHours());
startDate.setMinutes(dueDate.getMinutes());
startDate.setSeconds(dueDate.getSeconds());
startDate = startDate
.withHourOfDay(dueDate.getHourOfDay())
.withMinuteOfHour(dueDate.getMinuteOfHour())
.withSecondOfMinute(dueDate.getSecondOfMinute());
}
}
return startDate;
}
private static DateValue setUpStartDateAsDV(Task task, Date startDate) {
private static DateValue setUpStartDateAsDV(Task task, DateTime startDate) {
if(task.hasDueTime()) {
return new DateTimeValueImpl(startDate.getYear() + 1900,
startDate.getMonth() + 1, startDate.getDate(),
startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
return new DateTimeValueImpl(startDate.getYear(),
startDate.getMonthOfYear(), startDate.getDayOfMonth(),
startDate.getHourOfDay(), startDate.getMinuteOfHour(), startDate.getSecondOfMinute());
} else {
return new DateValueImpl(startDate.getYear() + 1900,
startDate.getMonth() + 1, startDate.getDate());
return new DateValueImpl(startDate.getYear(),
startDate.getMonthOfYear(), startDate.getDayOfMonth());
}
}
static long handleSubdayRepeat(Date startDate, RRule rrule) {
static long handleSubdayRepeat(DateTime startDate, RRule rrule) {
long millis;
switch(rrule.getFreq()) {
case HOURLY:
@ -300,7 +302,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
default:
throw new RuntimeException("Error handing subday repeat: " + rrule.getFreq()); //$NON-NLS-1$
}
long newDueDate = startDate.getTime() + millis * rrule.getInterval();
long newDueDate = startDate.getMillis() + millis * rrule.getInterval();
return Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, newDueDate);
}

@ -101,7 +101,7 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
System.arraycopy(values, 0, updated, 1, values.length);
Date hideUntilAsDate = newDate(specificDate);
if(hideUntilAsDate.getHours() == 0 && hideUntilAsDate.getMinutes() == 0 && hideUntilAsDate.getSeconds() == 0) {
updated[0] = new HideUntilValue(DateUtilities.getDateString(newDate(specificDate)),
updated[0] = new HideUntilValue(DateUtilities.getDateString(newDateTime(specificDate)),
Task.HIDE_UNTIL_SPECIFIC_DAY, specificDate);
existingDate = specificDate;
} else {
@ -123,11 +123,12 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
// ... at conclusion of dialog, update our list
HideUntilValue item = adapter.getItem(position);
if(item.date == SPECIFIC_DATE) {
customDate = newDate(existingDate == EXISTING_TIME_UNSET ? DateUtilities.now() : existingDate);
customDate.setSeconds(0);
customDate =
newDateTime(existingDate == EXISTING_TIME_UNSET ? DateUtilities.now() : existingDate)
.withSecondOfMinute(0);
taskEditFragment.startActivityForResult(new Intent(taskEditFragment.getActivity(), DateAndTimePickerActivity.class) {{
putExtra(DateAndTimePickerActivity.EXTRA_TIMESTAMP, customDate.getTime());
putExtra(DateAndTimePickerActivity.EXTRA_TIMESTAMP, customDate.getMillis());
}}, REQUEST_HIDE_UNTIL);
spinner.setSelection(previousSetting);
} else {
@ -138,7 +139,7 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
}
public void setCustomDate(long timestamp) {
customDate = new DateTime(timestamp).toDate();
customDate = new DateTime(timestamp);
customDateFinished();
}
@ -147,10 +148,10 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
// ignore
}
Date customDate;
DateTime customDate;
private void customDateFinished() {
HideUntilValue[] list = createHideUntilList(customDate.getTime());
HideUntilValue[] list = createHideUntilList(customDate.getMillis());
adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

@ -26,7 +26,6 @@ import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.tasks.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
@ -35,9 +34,9 @@ import org.tasks.activities.LocationPickerActivity;
import org.tasks.location.Geofence;
import org.tasks.location.GeofenceService;
import org.tasks.preferences.Preferences;
import org.tasks.time.DateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@ -361,10 +360,9 @@ public class ReminderControlSet extends TaskEditControlSetBase implements Adapte
private String getDisplayString(long forDate) {
DateTime dateTime = newDateTime(forDate);
Date d = dateTime.toDate();
return (dateTime.getYear() == newDateTime().getYear()
? DateUtilities.getLongDateStringHideYear(d)
: DateUtilities.getLongDateString(d)) +
? DateUtilities.getLongDateStringHideYear(dateTime)
: DateUtilities.getLongDateString(dateTime)) +
", " + DateUtilities.getTimeString(activity, dateTime);
}

@ -43,7 +43,7 @@ import java.io.InputStream;
import javax.inject.Inject;
import static com.google.common.base.Strings.isNullOrEmpty;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class Notifier {

@ -11,7 +11,7 @@ import com.fourmob.datetimepicker.date.DatePickerDialog;
import org.tasks.time.DateTime;
import org.tasks.dialogs.MyDatePickerDialog;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class DateAndTimePickerActivity extends FragmentActivity implements DatePickerDialog.OnDateSetListener, DialogInterface.OnCancelListener {

@ -13,7 +13,7 @@ import com.sleepbot.datetimepicker.time.TimePickerDialog;
import org.tasks.time.DateTime;
import org.tasks.dialogs.MyTimePickerDialog;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class TimePickerActivity extends FragmentActivity implements TimePickerDialog.OnTimeSetListener, DialogInterface.OnDismissListener {

@ -3,17 +3,10 @@ package org.tasks.date;
import org.tasks.time.DateTime;
import java.util.Date;
import java.util.TimeZone;
public class DateTimeUtils {
public static long currentTimeMillis() {
return org.tasks.time.DateTimeUtils.currentTimeMillis();
}
public static Date newDate() {
return newDate(currentTimeMillis());
}
public static Date newDate(long date) {
return new Date(date);
}
@ -22,8 +15,8 @@ public class DateTimeUtils {
return new Date(year - 1900, month - 1, day);
}
public static Date newDateUtc(int year, int month, int day, int hour, int minute, int second) {
return newDate(Date.UTC(year - 1900, month - 1, day, hour, minute, second));
public static DateTime newDateUtc(int year, int month, int day, int hour, int minute, int second) {
return new DateTime(year, month, day, hour, minute, second, 0, TimeZone.getTimeZone("GMT"));
}
public static DateTime newDateTime() {
@ -37,8 +30,4 @@ public class DateTimeUtils {
public static DateTime newDateTime(long timestamp) {
return new DateTime(timestamp);
}
public static String printTimestamp(long timestamp) {
return new Date(timestamp).toString();
}
}

@ -11,9 +11,9 @@ import org.tasks.preferences.Preferences;
import javax.inject.Inject;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.date.DateTimeUtils.printTimestamp;
import static org.tasks.time.DateTimeUtils.printTimestamp;
public abstract class MidnightIntentService extends InjectingIntentService {

@ -11,8 +11,8 @@ import org.tasks.preferences.Preferences;
import javax.inject.Inject;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.date.DateTimeUtils.printTimestamp;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.printTimestamp;
public abstract class RecurringIntervalIntentService extends InjectingIntentService {

@ -19,7 +19,7 @@ import javax.inject.Singleton;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static com.todoroo.andlib.utility.DateUtilities.ONE_MINUTE;
import static org.tasks.date.DateTimeUtils.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
@Singleton
public class RefreshScheduler {

@ -2,7 +2,6 @@ package org.tasks.time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
@ -10,6 +9,7 @@ import java.util.concurrent.TimeUnit;
public class DateTime {
private static final int MAX_MILLIS_PER_DAY = (int) TimeUnit.DAYS.toMillis(1);
private static final TimeZone UTC = TimeZone.getTimeZone("GMT");
private final TimeZone timeZone;
private final long timestamp;
@ -38,10 +38,6 @@ public class DateTime {
this(DateTimeUtils.currentTimeMillis());
}
public DateTime(Date d) {
this(d.getTime());
}
public DateTime(long timestamp) {
this(timestamp, TimeZone.getDefault());
}
@ -92,8 +88,8 @@ public class DateTime {
return getCalendar().get(Calendar.MINUTE);
}
@Deprecated public Date toDate() {
return new Date(timestamp);
public boolean isLastDayOfMonth() {
return getDayOfMonth() == getNumberOfDaysInMonth();
}
public int getNumberOfDaysInMonth() {
@ -181,10 +177,18 @@ public class DateTime {
}
public DateTime toUTC() {
Calendar local = getCalendar();
Calendar utc = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
utc.setTimeInMillis(local.getTimeInMillis());
return new DateTime(utc);
return toTimeZone(UTC);
}
public DateTime toLocal() {
return toTimeZone(TimeZone.getDefault());
}
private DateTime toTimeZone(TimeZone timeZone) {
Calendar current = getCalendar();
Calendar target = new GregorianCalendar(timeZone);
target.setTimeInMillis(current.getTimeInMillis());
return new DateTime(target);
}
public int getSecondOfMinute() {

@ -1,5 +1,7 @@
package org.tasks.time;
import java.util.Date;
public class DateTimeUtils {
private static final SystemMillisProvider SYSTEM_MILLIS_PROVIDER = new SystemMillisProvider();
@ -16,4 +18,8 @@ public class DateTimeUtils {
public static void setCurrentMillisSystem() {
MILLIS_PROVIDER = SYSTEM_MILLIS_PROVIDER;
}
public static String printTimestamp(long timestamp) {
return new Date(timestamp).toString();
}
}

@ -20,11 +20,11 @@ import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.tasks.time.DateTime;
import org.tasks.R;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.dialogs.MyTimePickerDialog;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.time.DateTime;
import java.util.ArrayList;
import java.util.List;
@ -32,7 +32,6 @@ import java.util.concurrent.TimeUnit;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastHoneycomb;
import static java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
public class DeadlineControlSet extends TaskEditControlSetBase {
@ -127,7 +126,7 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
} else if (date == today.plusWeeks(1).getMillis()) {
dueDateOptions.set(0, nextWeekString);
} else {
dueDateOptions.set(0, DateUtilities.getLongDateStringHideYear(newDate(date)));
dueDateOptions.set(0, DateUtilities.getLongDateStringHideYear(newDateTime(date)));
}
}
dueDateOptions.set(3, nextWeekString);

@ -6,11 +6,11 @@ import android.content.res.TypedArray;
import android.preference.Preference;
import android.util.AttributeSet;
import org.tasks.time.DateTime;
import com.todoroo.andlib.utility.DateUtilities;
import org.tasks.R;
import org.tasks.activities.TimePickerActivity;
import java.text.DateFormat;
import org.tasks.time.DateTime;
public class TimePreference extends Preference {
@ -57,7 +57,7 @@ public class TimePreference extends Preference {
private void setMillisOfDay(int millisOfDay) {
this.millisOfDay = millisOfDay;
String setting = DateFormat.getTimeInstance(DateFormat.SHORT).format(new DateTime().withMillisOfDay(millisOfDay).toDate());
String setting = DateUtilities.getTimeString(getContext(), new DateTime().withMillisOfDay(millisOfDay));
setSummary(summary == null ? setting : String.format(summary, setting));
}
}

Loading…
Cancel
Save