You can use more than one approach. It depends on how you process after getting the sorted result.
Note:
java.time.LocalDateTime already implemented by java.lang.Comparable<T> Interface. We can use kotlin stdlib List.sortBy to sort List<LocalDateTime> directly.
Link:
// https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sorted-by.html fun <T, R : Comparable<R>> Iterable<T>.sortedBy( selector: (T) -> R? ): List<T>
The easiest way is to convert String -> java.time.LocalDateTime and use List.sortBy directly.
The whole implementation could be like this:
import java.time.LocalDateTime import java.time.format.DateTimeFormatter ... // Create a convert function, String -> LocalDateTime val dateTimeStrToLocalDateTime: (String) -> LocalDateTime = { LocalDateTime.parse(it, DateTimeFormatter.ofPattern("dd-MM-yyyy | HH:mm")) } val list = listOf("14-10-2016 | 15:48", "01-08-2015 | 09:29", "15-11-2016 | 19:43") // You will get List<LocalDateTime> sorted in ascending order list.map(dateTimeStrToLocalDateTime).sorted() // You will get List<LocalDateTime> sorted in descending order list.map(dateTimeStrToLocalDateTime).sortedDescending() // You will get List<String> which is sorted in ascending order list.sortedBy(dateTimeStrToLocalDateTime) // You will get List<String> which is sorted in descending order list.sortedByDescending(dateTimeStrToLocalDateTime)
If you want to use org.joda.time.DateTime , you can just make a small change to the conversion function.
Friendly reminder, always choose val as your first choice in Kotlin :).
source share