From 524e2573f26b756c98c6f2324dc87cbb07b93e60 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 8 Jan 2020 13:43:27 -0600 Subject: [PATCH] Set time zone on due dates --- .../org/tasks/caldav/CaldavConverter.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/tasks/caldav/CaldavConverter.java b/app/src/main/java/org/tasks/caldav/CaldavConverter.java index b31a611a4..a864a2b07 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavConverter.java +++ b/app/src/main/java/org/tasks/caldav/CaldavConverter.java @@ -7,6 +7,7 @@ import static org.tasks.caldav.CaldavUtils.fromVtodo; import static org.tasks.caldav.CaldavUtils.setParent; import static org.tasks.date.DateTimeUtils.newDateTime; +import at.bitfire.ical4android.DateUtils; import com.google.common.base.Strings; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task.Priority; @@ -14,6 +15,7 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Locale; +import java.util.TimeZone; import net.fortuna.ical4j.model.Date; import net.fortuna.ical4j.model.DateTime; import net.fortuna.ical4j.model.Recur; @@ -117,15 +119,16 @@ public class CaldavConverter { remote.setCreatedAt(newDateTime(task.getCreationDate()).toUTC().getMillis()); remote.setSummary(task.getTitle()); remote.setDescription(task.getNotes()); - if (task.hasDueDate()) { - long utcMillis = new org.tasks.time.DateTime(task.getDueDate()).toUTC().getMillis(); - if (task.hasDueTime()) { - DateTime dateTime = new DateTime(utcMillis); - dateTime.setUtc(true); - remote.setDue(new Due(dateTime)); - } else { - remote.setDue(new Due(new Date(utcMillis))); - } + if (task.hasDueTime()) { + net.fortuna.ical4j.model.TimeZone tz = + 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)); + } else if (task.hasDueDate()) { + remote.setDue(new Due(new Date(task.getDueDate()))); } else { remote.setDue(null); }