Set time zone on due dates

gtask_related_email
Alex Baker 6 years ago
parent 94f9a215f2
commit 524e2573f2

@ -7,6 +7,7 @@ import static org.tasks.caldav.CaldavUtils.fromVtodo;
import static org.tasks.caldav.CaldavUtils.setParent; import static org.tasks.caldav.CaldavUtils.setParent;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import at.bitfire.ical4android.DateUtils;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.Task.Priority; import com.todoroo.astrid.data.Task.Priority;
@ -14,6 +15,7 @@ import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone;
import net.fortuna.ical4j.model.Date; import net.fortuna.ical4j.model.Date;
import net.fortuna.ical4j.model.DateTime; import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.Recur; import net.fortuna.ical4j.model.Recur;
@ -117,15 +119,16 @@ public class CaldavConverter {
remote.setCreatedAt(newDateTime(task.getCreationDate()).toUTC().getMillis()); remote.setCreatedAt(newDateTime(task.getCreationDate()).toUTC().getMillis());
remote.setSummary(task.getTitle()); remote.setSummary(task.getTitle());
remote.setDescription(task.getNotes()); remote.setDescription(task.getNotes());
if (task.hasDueDate()) {
long utcMillis = new org.tasks.time.DateTime(task.getDueDate()).toUTC().getMillis();
if (task.hasDueTime()) { if (task.hasDueTime()) {
DateTime dateTime = new DateTime(utcMillis); net.fortuna.ical4j.model.TimeZone tz =
dateTime.setUtc(true); DateUtils.INSTANCE.getTzRegistry().getTimeZone(TimeZone.getDefault().getID());
DateTime dateTime = new DateTime(tz != null
? task.getDueDate()
: new org.tasks.time.DateTime(task.getDueDate()).toUTC().getMillis());
dateTime.setTimeZone(tz);
remote.setDue(new Due(dateTime)); remote.setDue(new Due(dateTime));
} else { } else if (task.hasDueDate()) {
remote.setDue(new Due(new Date(utcMillis))); remote.setDue(new Due(new Date(task.getDueDate())));
}
} else { } else {
remote.setDue(null); remote.setDue(null);
} }

Loading…
Cancel
Save