Эмулятор, API 27 (android 8), но от эмулятора не зависит, на А9 также
используется org.threeten.bp
но ZoneId.systemDefault().id выдает America/Sao_Paulo, это -3 часа, а по настройкам -2
причем
val dst = ZoneId.systemDefault().rules.getDaylightSavings(Instant.now())
val isUseDst = ZoneId.systemDefault().rules.isDaylightSavings(Instant.now())
Timber.d("dst: ${dst.toHours()}")
Timber.d("isUseDst: $isUseDst")
выдает
dst: 0
isUseDst: false
Это явно проблема с переходом на летнее время, но как получить правильное время?
еще логи
val zoneUtc = ZoneId.of("UTC")
val zonedDateTime = ZonedDateTime.of(dateTimeUTC, zoneUtc)
val localZone = ZoneId.systemDefault()
val localZonedDateTime: ZonedDateTime = zonedDateTime.withZoneSameInstant(localZone)
Timber.d("toLocalDateTime, zonedDateTimeUtc: $zonedDateTime")
Timber.d("toLocalDateTime, $localZonedDateTime")
toLocalDateTime, zonedDateTimeUtc: 2023-11-13T10:09:13Z[UTC]
toLocalDateTime, 2023-11-13T07:09:13-03:00[America/Sao_Paulo]