Когда у нас на кмп проекте выкатили фичу с форматированием даты и времени на все таргеты через expect/actual - я чуть не умер ☠️🫨
Оказывается многие не в курсе, что в kotlinx-datetime
появилось мультиплатформенное форматирование.
API довольно простое 🌚
Допустим мы хотим конвертировать UNIX в строку формата:
10 March, 2024
Тогда весь код сведется к 2 шагам:
1. Создание форматтера через dsl в необходимом стиле:
private val formatter = LocalDateTime.Format {
dayOfMonth(padding = Padding.NONE)
char(' ')
monthName(MonthNames.ENGLISH_FULL)
char(',')
char(' ')
year()
}
2. Конвертация с использованием format() функции:
fun format(timestamp: Long): String {
return Instant.fromEpochMilliseconds(timestamp)
.toLocalDateTime()
.format(formatter)
}
P.S: Форматирование без учета локали!