Apply tz offset when converting to ical4j Date

pull/1400/head
Alex Baker 5 years ago
parent ac743ba06d
commit 99e624e836

@ -205,7 +205,7 @@ class RepeatTaskHelper @Inject constructor(
return if (task.hasDueTime()) { return if (task.hasDueTime()) {
startDate.toDateTime() startDate.toDateTime()
} else { } else {
Date(startDate.millis + startDate.offset) startDate.toDate()
} }
} }

@ -32,6 +32,7 @@ import org.tasks.repeats.RecurrenceUtils.newRecur
import org.tasks.time.DateTime.UTC import org.tasks.time.DateTime.UTC
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils.startOfMinute import org.tasks.time.DateTimeUtils.startOfMinute
import org.tasks.time.DateTimeUtils.toDate
import timber.log.Timber import timber.log.Timber
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.StringReader import java.io.StringReader
@ -339,12 +340,12 @@ class iCalendar @Inject constructor(
} }
due = if (dueDate > 0) { due = if (dueDate > 0) {
startDate = min(dueDate, startDate) startDate = min(dueDate, startDate)
Due(if (allDay) getDate(dueDate) else getDateTime(dueDate)) Due(if (allDay) dueDate.toDate() else getDateTime(dueDate))
} else { } else {
null null
} }
dtStart = if (startDate > 0) { dtStart = if (startDate > 0) {
DtStart(if (allDay) getDate(startDate) else getDateTime(startDate)) DtStart(if (allDay) startDate.toDate() else getDateTime(startDate))
} else { } else {
null null
} }
@ -388,10 +389,6 @@ class iCalendar @Inject constructor(
snooze = task.reminderSnooze snooze = task.reminderSnooze
} }
private fun getDate(timestamp: Long): Date {
return Date(timestamp + newDateTime(timestamp).offset)
}
private fun getDateTime(timestamp: Long): DateTime { private fun getDateTime(timestamp: Long): DateTime {
val tz = ical4jTimeZone(TimeZone.getDefault().id) val tz = ical4jTimeZone(TimeZone.getDefault().id)
val dateTime = DateTime(if (tz != null) timestamp else org.tasks.time.DateTime(timestamp).toUTC().millis) val dateTime = DateTime(if (tz != null) timestamp else org.tasks.time.DateTime(timestamp).toUTC().millis)

@ -1,14 +1,8 @@
package org.tasks.time; package org.tasks.time;
import static com.todoroo.astrid.core.SortHelper.APPLE_EPOCH; import net.fortuna.ical4j.model.WeekDay;
import static java.util.Calendar.FRIDAY;
import static java.util.Calendar.MONDAY; import org.tasks.locale.Locale;
import static java.util.Calendar.SATURDAY;
import static java.util.Calendar.SUNDAY;
import static java.util.Calendar.THURSDAY;
import static java.util.Calendar.TUESDAY;
import static java.util.Calendar.WEDNESDAY;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
@ -19,8 +13,16 @@ import java.util.GregorianCalendar;
import java.util.Objects; import java.util.Objects;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import net.fortuna.ical4j.model.WeekDay;
import org.tasks.locale.Locale; import static com.todoroo.astrid.core.SortHelper.APPLE_EPOCH;
import static java.util.Calendar.FRIDAY;
import static java.util.Calendar.MONDAY;
import static java.util.Calendar.SATURDAY;
import static java.util.Calendar.SUNDAY;
import static java.util.Calendar.THURSDAY;
import static java.util.Calendar.TUESDAY;
import static java.util.Calendar.WEDNESDAY;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class DateTime { public class DateTime {
@ -357,7 +359,7 @@ public class DateTime {
} }
public net.fortuna.ical4j.model.Date toDate() { public net.fortuna.ical4j.model.Date toDate() {
return timestamp == 0 ? null : new net.fortuna.ical4j.model.Date(timestamp); return timestamp == 0 ? null : new net.fortuna.ical4j.model.Date(timestamp + getOffset());
} }
public LocalDate toLocalDate() { public LocalDate toLocalDate() {

@ -40,4 +40,6 @@ object DateTimeUtils {
fun Long.startOfMinute(): Long = if (this > 0) toDateTime().startOfMinute().millis else 0 fun Long.startOfMinute(): Long = if (this > 0) toDateTime().startOfMinute().millis else 0
fun Long.millisOfDay(): Int = if (this > 0) toDateTime().millisOfDay else 0 fun Long.millisOfDay(): Int = if (this > 0) toDateTime().millisOfDay else 0
fun Long.toDate(): net.fortuna.ical4j.model.Date? = this.toDateTime().toDate()
} }
Loading…
Cancel
Save