Fix daylight offsets

This commit is contained in:
Sad Ellie 2023-10-26 17:33:24 +03:00
parent c8670a08c3
commit bd43546141

View File

@ -25,19 +25,21 @@ import android.icu.util.ULocale
import android.os.Build import android.os.Build
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import java.time.ZonedDateTime import java.time.ZonedDateTime
import java.util.Date
@RequiresApi(Build.VERSION_CODES.N) @RequiresApi(Build.VERSION_CODES.N)
fun TimeZone.offset(currentTime: ZonedDateTime): ZonedDateTime { fun TimeZone.offset(currentTime: ZonedDateTime): ZonedDateTime {
val offsetSeconds = currentTime.offset.totalSeconds.toLong() val offsetSeconds = currentTime.offset.totalSeconds.toLong()
val currentTimeWithoutOffset = currentTime.minusSeconds(offsetSeconds) val currentTimeWithoutOffset = currentTime.minusSeconds(offsetSeconds)
val dstOffset: Long = if (inDaylightTime(Date.from(currentTime.toInstant()))) (dstSavings / 1000L) else 0L
return currentTimeWithoutOffset.plusSeconds(this.rawOffset / 1000L) return currentTimeWithoutOffset.plusSeconds(this.rawOffset / 1000L).plusSeconds(dstOffset)
} }
@RequiresApi(Build.VERSION_CODES.N) @RequiresApi(Build.VERSION_CODES.N)
fun TimeZone.regionName( fun TimeZone.regionName(
timeZoneNames: TimeZoneNames, timeZoneNames: TimeZoneNames,
localeDisplayNames: LocaleDisplayNames localeDisplayNames: LocaleDisplayNames,
): String { ): String {
val location = timeZoneNames.getExemplarLocationName(this.id) ?: return fallbackRegion val location = timeZoneNames.getExemplarLocationName(this.id) ?: return fallbackRegion
val region = localeDisplayNames.regionDisplayName(TimeZone.getRegion(id)) ?: return fallbackRegion val region = localeDisplayNames.regionDisplayName(TimeZone.getRegion(id)) ?: return fallbackRegion