Wpis z mikrobloga

@czlowiek_z_lisciem_na_glowie:
spróbuj:

val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("h:mm:ss a").withZone(UTC)
fun main(args: Array<String>) {
val date = "3:16:00 pm"
println("""no zone: ${formatter.parse(date, LocalTime::from)} or: ${LocalTime.parse(date, formatter)},
|local: ${OffsetTime.parse(date, formatter).withOffsetSameInstant(ZoneId.systemDefault().getRules().getOffset(Instant.now())).toLocalTime()}""".trimMargin())
`

u mnie daje:

no zone: 15:16 or: 15:16,

local: 16:16,
@draxgar:
Dzięki, siedziałem nad tym przez weekend i też mi się udało. Zrobiłem na telefonie test dla Warszawy i dla Buenos Aires i poprawnie konwertuje tzn dla Warszawy GTM+1 a ten drugi GMT-3
Ważne aby na wejściu była czas w standardzie ISO: 2023-01-28T15:17:48+00:00

fun convertUTCtoLocalTime(timeUtcStr: String): Date { //2023-01-28T15:17:48+00:00

val formatterNew = DateTimeFormatter.ISO_OFFSET_DATE_TIME
val offsetDateTime = OffsetDateTime.parse(timeUtcStr, formatterNew)

val offsetDateTimeInstant = offsetDateTime.toInstant()
val timestamp = offsetDateTimeInstant.toEpochMilli()
val newDate = Date(timestamp)// tu