void createStartAndEndDate(Task task, ContentValues values) { long dueDate = task.getDueDate(); long tzCorrectedDueDate = dueDate + TimeZone.getDefault().getOffset(dueDate); long tzCorrectedDueDateNow = DateUtilities.now() + TimeZone.getDefault().getOffset(DateUtilities.now()); // FIXME: doesnt respect timezones, see story 17443653 if (task.hasDueDate()) { if (task.hasDueTime()) { long estimatedTime = task.getEstimatedSeconds() * 1000; if (estimatedTime <= 0) { estimatedTime = DEFAULT_CAL_TIME; } if (preferences.getBoolean(R.string.p_end_at_deadline, true)) { values.put("dtstart", dueDate); values.put("dtend", dueDate + estimatedTime); } else { values.put("dtstart", dueDate - estimatedTime); values.put("dtend", dueDate); } // setting a duetime to a previously timeless event requires explicitly setting allDay=0 values.put("allDay", "0"); values.put("eventTimezone", TimeZone.getDefault().getID()); } else { values.put("dtstart", tzCorrectedDueDate); values.put("dtend", tzCorrectedDueDate); values.put("allDay", "1"); } } else { values.put("dtstart", tzCorrectedDueDateNow); values.put("dtend", tzCorrectedDueDateNow); values.put("allDay", "1"); } adjustDateForIcs(values); }