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

@ -1,14 +1,8 @@
package org.tasks.time;
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;
import net.fortuna.ical4j.model.WeekDay;
import org.tasks.locale.Locale;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@ -19,8 +13,16 @@ import java.util.GregorianCalendar;
import java.util.Objects;
import java.util.TimeZone;
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 {
@ -357,7 +359,7 @@ public class DateTime {
}
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() {

@ -40,4 +40,6 @@ object DateTimeUtils {
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.toDate(): net.fortuna.ical4j.model.Date? = this.toDateTime().toDate()
}
Loading…
Cancel
Save