Migrate apply time zone

pull/1120/head
sgallese 4 years ago
parent f12ecb16fc
commit b58f4d6177

@ -30,13 +30,13 @@ import junit.framework.TestCase
import org.hamcrest.CoreMatchers.hasItems
import org.hamcrest.MatcherAssert.assertThat
import org.isoron.platform.time.LocalDate
import org.isoron.platform.time.LocalDate.Companion.setStartDayOffset
import org.isoron.uhabits.core.models.HabitList
import org.isoron.uhabits.core.models.ModelFactory
import org.isoron.uhabits.core.models.Timestamp
import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.core.tasks.TaskRunner
import org.isoron.uhabits.core.utils.DateUtils.Companion.getToday
import org.isoron.uhabits.core.utils.DateUtils.Companion.setStartDayOffset
import org.isoron.uhabits.inject.ActivityContextModule
import org.isoron.uhabits.inject.AppContextModule
import org.isoron.uhabits.inject.HabitsModule

@ -21,10 +21,10 @@ package org.isoron.uhabits
import android.app.Application
import android.content.Context
import org.isoron.platform.time.LocalDate.Companion.setStartDayOffset
import org.isoron.uhabits.core.database.UnsupportedDatabaseVersionException
import org.isoron.uhabits.core.reminders.ReminderScheduler
import org.isoron.uhabits.core.ui.NotificationTray
import org.isoron.uhabits.core.utils.DateUtils.Companion.setStartDayOffset
import org.isoron.uhabits.inject.AppContextModule
import org.isoron.uhabits.inject.DaggerHabitsApplicationComponent
import org.isoron.uhabits.inject.HabitsApplicationComponent

@ -23,10 +23,10 @@ import android.content.ContentUris
import android.content.Context
import android.content.Intent
import android.util.Log
import org.isoron.platform.time.LocalDate.Companion.getStartOfTodayWithOffset
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.Timestamp
import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayWithOffset
/**
* The Android BroadcastReceiver for Loop Habit Tracker.

@ -219,6 +219,18 @@ data class LocalDate(val daysSince2000: Int) {
}
fun getStartOfTodayWithOffset(): Long = getStartOfDayWithOffset(getLocalTime())
fun applyTimezone(localTimestamp: Long): Long {
val tz = getTimeZone()
val offset = tz.offsetAt(
Instant.fromEpochMilliseconds(localTimestamp)
).totalSeconds * 1000
val difference = localTimestamp - offset
val offsetDifference = tz.offsetAt(
Instant.fromEpochMilliseconds(difference)
).totalSeconds * 1000
return localTimestamp - offsetDifference
}
}
}

@ -0,0 +1,26 @@
package org.isoron.platform.core
import org.isoron.platform.time.LocalDate
import kotlin.test.AfterTest
import kotlin.test.BeforeTest
open class BaseUnitTest {
@BeforeTest
@Throws(Exception::class)
open fun setUp() {
LocalDate.fixedLocalTime = FIXED_LOCAL_TIME
LocalDate.setStartDayOffset(0, 0)
}
@AfterTest
@Throws(Exception::class)
open fun tearDown() {
LocalDate.fixedLocalTime = null
LocalDate.setStartDayOffset(0, 0)
}
companion object {
// 8:00am, January 25th, 2015 (UTC)
const val FIXED_LOCAL_TIME = 1422172800000L
}
}

@ -20,8 +20,11 @@
package org.isoron.platform.time
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.Month
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toInstant
import org.isoron.platform.core.BaseUnitTest
import org.isoron.platform.time.LocalDate.Companion.applyTimezone
import org.isoron.platform.time.LocalDate.Companion.getStartOfDay
import org.isoron.platform.time.LocalDate.Companion.getStartOfDayWithOffset
import org.isoron.platform.time.LocalDate.Companion.getStartOfToday
@ -31,7 +34,7 @@ import kotlin.test.Test
import kotlin.test.assertContentEquals
import kotlin.test.assertEquals
class DatesTest {
class DatesTest : BaseUnitTest() {
@Test
fun testDatesBefore2000() {
val date = LocalDate(-1)
@ -44,7 +47,7 @@ class DatesTest {
fun testGetLocalTime() {
LocalDate.fixedLocalTime = null
LocalDate.fixedTimeZone = TimeZone.of("Australia/Sydney")
val utcTestTimeInMillis = unixTime(2015, 1, 11)
val utcTestTimeInMillis = unixTime(2015, Month.JANUARY, 11)
val localTimeInMillis = LocalDate.getLocalTime(utcTestTimeInMillis)
val expectedUnixTimeOffsetForSydney = 11 * 60 * 60 * 1000
val expectedUnixTimeForSydney = utcTestTimeInMillis + expectedUnixTimeOffsetForSydney
@ -59,16 +62,16 @@ class DatesTest {
@Test
fun testGetStartOfDay() {
val expectedStartOfDayUtc = unixTime(2017, 1, 1)
val laterInTheDayUtc = unixTime(2017, 1, 1, 20, 0)
val expectedStartOfDayUtc = unixTime(2017, Month.JANUARY, 1)
val laterInTheDayUtc = unixTime(2017, Month.JANUARY, 1, 20, 0)
val startOfDay = getStartOfDay(laterInTheDayUtc)
assertEquals(expectedStartOfDayUtc, startOfDay)
}
@Test
fun testGetStartOfToday() {
val expectedStartOfDayUtc = unixTime(2017, 1, 1)
val laterInTheDayUtc = unixTime(2017, 1, 1, 20, 0)
val expectedStartOfDayUtc = unixTime(2017, Month.JANUARY, 1)
val laterInTheDayUtc = unixTime(2017, Month.JANUARY, 1, 20, 0)
LocalDate.fixedLocalTime = laterInTheDayUtc
val startOfToday = getStartOfToday()
assertEquals(expectedStartOfDayUtc, startOfToday)
@ -77,7 +80,7 @@ class DatesTest {
@Test
@Throws(Exception::class)
fun testGetStartOfDayWithOffset() {
val timestamp = unixTime(2020, 9, 3)
val timestamp = unixTime(2020, Month.SEPTEMBER, 3)
assertEquals(
timestamp,
getStartOfDayWithOffset(timestamp + LocalDate.HOUR_LENGTH),
@ -94,8 +97,8 @@ class DatesTest {
val hourOffset = 3
LocalDate.setStartDayOffset(hourOffset, 0)
LocalDate.fixedTimeZone = kotlinx.datetime.TimeZone.UTC
val startOfYesterday = unixTime(2017, 1, 1, 0, 0)
val priorToOffset = unixTime(2017, 1, 2, hourOffset - 1, 0)
val startOfYesterday = unixTime(2017, Month.JANUARY, 1, 0, 0)
val priorToOffset = unixTime(2017, Month.JANUARY, 2, hourOffset - 1, 0)
LocalDate.fixedLocalTime = priorToOffset
val startOfTodayWithOffset = getStartOfTodayWithOffset()
assertEquals(startOfYesterday, startOfTodayWithOffset)
@ -106,20 +109,159 @@ class DatesTest {
val hourOffset = 3
LocalDate.setStartDayOffset(hourOffset, 0)
LocalDate.fixedTimeZone = kotlinx.datetime.TimeZone.UTC
val startOfToday = unixTime(2017, 1, 1, 0, 0)
val afterOffset = unixTime(2017, 1, 1, hourOffset + 1, 0)
val startOfToday = unixTime(2017, Month.JANUARY, 1, 0, 0)
val afterOffset = unixTime(2017, Month.JANUARY, 1, hourOffset + 1, 0)
LocalDate.fixedLocalTime = afterOffset
val startOfTodayWithOffset = getStartOfTodayWithOffset()
assertEquals(startOfToday, startOfTodayWithOffset)
}
private fun unixTime(year: Int, month: Int, day: Int): Long {
@Test
fun test_applyTimezone() {
LocalDate.fixedTimeZone = TimeZone.of("Australia/Sydney")
assertEquals(
applyTimezone(unixTime(2017, Month.JULY, 30, 18, 0)),
unixTime(2017, Month.JULY, 30, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 0, 0)),
unixTime(2017, Month.SEPTEMBER, 29, 14, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 10, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 0, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 11, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 1, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 12, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 2, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 13, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 3, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 22, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 12, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.SEPTEMBER, 30, 23, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 13, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 0, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 14, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 1, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 15, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 1, 59)),
unixTime(2017, Month.SEPTEMBER, 30, 15, 59)
)
// DST begins
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 3, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 16, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 4, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 17, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 5, 0)),
unixTime(2017, Month.SEPTEMBER, 30, 18, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 11, 0)),
unixTime(2017, Month.OCTOBER, 1, 0, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 12, 0)),
unixTime(2017, Month.OCTOBER, 1, 1, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 13, 0)),
unixTime(2017, Month.OCTOBER, 1, 2, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 14, 0)),
unixTime(2017, Month.OCTOBER, 1, 3, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 15, 0)),
unixTime(2017, Month.OCTOBER, 1, 4, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 1, 19, 0)),
unixTime(2017, Month.OCTOBER, 1, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.OCTOBER, 2, 19, 0)),
unixTime(2017, Month.OCTOBER, 2, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Month.NOVEMBER, 30, 19, 0)),
unixTime(2017, Month.NOVEMBER, 30, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.MARCH, 31, 0, 0)),
unixTime(2018, Month.MARCH, 30, 13, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.MARCH, 31, 12, 0)),
unixTime(2018, Month.MARCH, 31, 1, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.MARCH, 31, 18, 0)),
unixTime(2018, Month.MARCH, 31, 7, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 0, 0)),
unixTime(2018, Month.MARCH, 31, 13, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 1, 0)),
unixTime(2018, Month.MARCH, 31, 14, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 1, 59)),
unixTime(2018, Month.MARCH, 31, 14, 59)
)
// DST ends
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 2, 0)),
unixTime(2018, Month.MARCH, 31, 16, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 3, 0)),
unixTime(2018, Month.MARCH, 31, 17, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 4, 0)),
unixTime(2018, Month.MARCH, 31, 18, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 10, 0)),
unixTime(2018, Month.APRIL, 1, 0, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Month.APRIL, 1, 18, 0)),
unixTime(2018, Month.APRIL, 1, 8, 0)
)
}
private fun unixTime(year: Int, month: Month, day: Int): Long {
return unixTime(year, month, day, 0, 0)
}
private fun unixTime(
year: Int,
month: Int,
month: Month,
day: Int,
hour: Int,
minute: Int,

@ -18,6 +18,7 @@
*/
package org.isoron.uhabits.core.reminders
import org.isoron.platform.time.LocalDate.Companion.applyTimezone
import org.isoron.platform.time.LocalDate.Companion.getLocalTime
import org.isoron.platform.time.LocalDate.Companion.getStartOfDayWithOffset
import org.isoron.uhabits.core.AppScope
@ -29,7 +30,6 @@ import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.HabitList
import org.isoron.uhabits.core.models.HabitMatcher
import org.isoron.uhabits.core.preferences.WidgetPreferences
import org.isoron.uhabits.core.utils.DateUtils.Companion.applyTimezone
import org.isoron.uhabits.core.utils.DateUtils.Companion.removeTimezone
import java.util.Locale
import java.util.Objects

@ -22,6 +22,7 @@ import kotlinx.datetime.Instant
import kotlinx.datetime.offsetAt
import org.isoron.platform.time.LocalDate
import org.isoron.platform.time.LocalDate.Companion.DAY_LENGTH
import org.isoron.platform.time.LocalDate.Companion.applyTimezone
import org.isoron.platform.time.LocalDate.Companion.getLocalTime
import org.isoron.platform.time.LocalDate.Companion.getStartOfToday
import org.isoron.platform.time.LocalDate.Companion.getStartOfTodayWithOffset
@ -39,20 +40,6 @@ import java.util.TimeZone
abstract class DateUtils {
companion object {
@JvmStatic
fun applyTimezone(localTimestamp: Long): Long {
val tz = getTimeZone()
val offset = tz.offsetAt(
Instant.fromEpochMilliseconds(localTimestamp)
).totalSeconds * 1000
val difference = localTimestamp - offset
val offsetDifference = tz.offsetAt(
Instant.fromEpochMilliseconds(difference)
).totalSeconds * 1000
return localTimestamp - offsetDifference
}
@JvmStatic
fun formatHeaderDate(day: GregorianCalendar): String {
val locale = getLocale()

@ -21,6 +21,7 @@ package org.isoron.uhabits.core
import com.nhaarman.mockitokotlin2.spy
import com.nhaarman.mockitokotlin2.validateMockitoUsage
import org.apache.commons.io.IOUtils
import org.isoron.platform.core.BaseUnitTest.Companion.FIXED_LOCAL_TIME
import org.isoron.platform.time.LocalDate
import org.isoron.platform.time.LocalDate.Companion.setStartDayOffset
import org.isoron.uhabits.core.commands.CommandRunner
@ -139,8 +140,6 @@ open class BaseUnitTest {
}
companion object {
// 8:00am, January 25th, 2015 (UTC)
const val FIXED_LOCAL_TIME = 1422172800000L
fun buildMemoryDatabase(): Database {
return try {
val db: Database = JdbcDatabase(

@ -23,12 +23,12 @@ import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import org.isoron.platform.time.LocalDate
import org.isoron.platform.time.LocalDate.Companion.applyTimezone
import org.isoron.uhabits.core.BaseUnitTest
import org.isoron.uhabits.core.models.Habit
import org.isoron.uhabits.core.models.Reminder
import org.isoron.uhabits.core.models.WeekdayList
import org.isoron.uhabits.core.preferences.WidgetPreferences
import org.isoron.uhabits.core.utils.DateUtils.Companion.applyTimezone
import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendar
import org.isoron.uhabits.core.utils.DateUtils.Companion.removeTimezone
import org.junit.Before

@ -22,6 +22,7 @@ import io.fluidsonic.locale.Locale
import junit.framework.Assert.assertEquals
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.core.IsEqual.equalTo
import org.isoron.platform.core.BaseUnitTest.Companion.FIXED_LOCAL_TIME
import org.isoron.platform.time.LocalDate
import org.isoron.platform.time.LocalDate.Companion.DAY_LENGTH
import org.isoron.platform.time.LocalDate.Companion.HOUR_LENGTH
@ -29,7 +30,6 @@ import org.isoron.platform.time.LocalDate.Companion.MINUTE_LENGTH
import org.isoron.platform.time.LocalDate.Companion.setStartDayOffset
import org.isoron.uhabits.core.BaseUnitTest
import org.isoron.uhabits.core.models.Timestamp
import org.isoron.uhabits.core.utils.DateUtils.Companion.applyTimezone
import org.isoron.uhabits.core.utils.DateUtils.Companion.formatHeaderDate
import org.isoron.uhabits.core.utils.DateUtils.Companion.getTodayWithOffset
import org.isoron.uhabits.core.utils.DateUtils.Companion.millisecondsUntilTomorrowWithOffset
@ -318,145 +318,6 @@ class DateUtilsTest : BaseUnitTest() {
)
}
@Test
fun test_applyTimezone() {
LocalDate.fixedTimeZone = kotlinx.datetime.TimeZone.of("Australia/Sydney")
assertEquals(
applyTimezone(unixTime(2017, Calendar.JULY, 30, 18, 0)),
unixTime(2017, Calendar.JULY, 30, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 0, 0)),
unixTime(2017, Calendar.SEPTEMBER, 29, 14, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 10, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 0, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 11, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 1, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 12, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 2, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 13, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 3, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 22, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 12, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.SEPTEMBER, 30, 23, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 13, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 0, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 14, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 1, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 15, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 1, 59)),
unixTime(2017, Calendar.SEPTEMBER, 30, 15, 59)
)
// DST begins
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 3, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 16, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 4, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 17, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 5, 0)),
unixTime(2017, Calendar.SEPTEMBER, 30, 18, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 11, 0)),
unixTime(2017, Calendar.OCTOBER, 1, 0, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 12, 0)),
unixTime(2017, Calendar.OCTOBER, 1, 1, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 13, 0)),
unixTime(2017, Calendar.OCTOBER, 1, 2, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 14, 0)),
unixTime(2017, Calendar.OCTOBER, 1, 3, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 15, 0)),
unixTime(2017, Calendar.OCTOBER, 1, 4, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 1, 19, 0)),
unixTime(2017, Calendar.OCTOBER, 1, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.OCTOBER, 2, 19, 0)),
unixTime(2017, Calendar.OCTOBER, 2, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2017, Calendar.NOVEMBER, 30, 19, 0)),
unixTime(2017, Calendar.NOVEMBER, 30, 8, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.MARCH, 31, 0, 0)),
unixTime(2018, Calendar.MARCH, 30, 13, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.MARCH, 31, 12, 0)),
unixTime(2018, Calendar.MARCH, 31, 1, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.MARCH, 31, 18, 0)),
unixTime(2018, Calendar.MARCH, 31, 7, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 0, 0)),
unixTime(2018, Calendar.MARCH, 31, 13, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 1, 0)),
unixTime(2018, Calendar.MARCH, 31, 14, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 1, 59)),
unixTime(2018, Calendar.MARCH, 31, 14, 59)
)
// DST ends
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 2, 0)),
unixTime(2018, Calendar.MARCH, 31, 16, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 3, 0)),
unixTime(2018, Calendar.MARCH, 31, 17, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 4, 0)),
unixTime(2018, Calendar.MARCH, 31, 18, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 10, 0)),
unixTime(2018, Calendar.APRIL, 1, 0, 0)
)
assertEquals(
applyTimezone(unixTime(2018, Calendar.APRIL, 1, 18, 0)),
unixTime(2018, Calendar.APRIL, 1, 8, 0)
)
}
@Test
fun test_removeTimezone() {
LocalDate.fixedTimeZone = kotlinx.datetime.TimeZone.of("Australia/Sydney")

Loading…
Cancel
Save