diff --git a/api/src/com/todoroo/andlib/utility/DateUtilities.java b/api/src/com/todoroo/andlib/utility/DateUtilities.java index 7c9ff71f0..421fc7fa6 100644 --- a/api/src/com/todoroo/andlib/utility/DateUtilities.java +++ b/api/src/com/todoroo/andlib/utility/DateUtilities.java @@ -143,18 +143,31 @@ public class DateUtilities { * @return yesterday, today, tomorrow, or null */ public static String getRelativeDay(Context context, long date) { - Date today = new Date(); - if(Math.abs(today.getTime() - date) > DateUtilities.ONE_DAY) - return null; - int todayDate = today.getDate(); - int otherDate = unixtimeToDate(date).getDate(); + long today = clearTime(new Date()); + long input = clearTime(new Date(date)); - if(todayDate == otherDate) + if(today == input) return context.getString(R.string.today); - if(today.getTime() > date) + + if(today + ONE_DAY == input) return context.getString(R.string.yesterday); - return context.getString(R.string.tomorrow); + if(today == input + ONE_DAY) + return context.getString(R.string.tomorrow); + + if(today + DateUtilities.ONE_WEEK <= input && + today - DateUtilities.ONE_WEEK >= input) + return DateUtilities.getWeekday(new Date(date)); + + return DateUtilities.getDateString(context, new Date(date)); + } + + private static long clearTime(Date date) { + date.setTime(date.getTime() / 1000L * 1000); + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + return date.getTime(); } } diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index 6731cd148..6d2cc2d2f 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -34,7 +34,6 @@ import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; -import android.text.format.DateUtils; import android.util.DisplayMetrics; import android.util.Log; import android.view.ContextMenu; @@ -318,13 +317,10 @@ public class TaskAdapter extends CursorAdapter implements Filterable { final TextView dueDateView = viewHolder.dueDate; { if(!task.isCompleted() && task.hasDueDate()) { long dueDate = task.getValue(Task.DUE_DATE); - long secondsLeft = dueDate - DateUtilities.now(); - if(secondsLeft > 0) { + if(dueDate > DateUtilities.now()) dueDateView.setTextAppearance(activity, R.style.TextAppearance_TAd_ItemDueDate); - } else { + else dueDateView.setTextAppearance(activity, R.style.TextAppearance_TAd_ItemDueDate_Overdue); - } - String dateValue = formatDate(dueDate); dueDateView.setText(dateValue); dueDateTextWidth = paint.measureText(dateValue); @@ -495,23 +491,10 @@ public class TaskAdapter extends CursorAdapter implements Filterable { if(dateCache.containsKey(date)) return dateCache.get(date); - String string; - - if(Math.abs(date - DateUtilities.now()) < DateUtilities.ONE_DAY) { - if(Task.hasDueTime(date)) - string = DateUtils.getRelativeTimeSpanString(activity, date, true).toString(); - else - string = DateUtilities.getRelativeDay(activity, date).toLowerCase(); - } else { - if(Task.hasDueTime(date)) - string = DateUtils.getRelativeDateTimeString(activity, date, - DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0).toString(); - else if(Math.abs(date - DateUtilities.now()) < DateUtilities.ONE_WEEK) - string = DateUtilities.getWeekday(new Date(date)); - else - string = DateUtilities.getDateString(activity, new Date(date)); - - } + String string = DateUtilities.getRelativeDay(activity, date).toLowerCase(); + if(Task.hasDueTime(date)) + string = String.format("%s, %s", string, //$NON-NLS-1$ + DateUtilities.getTimeString(activity, new Date(date))); dateCache.put(date, string); return string;