格式化日期时间字符串

ant*_*009 4 kotlin threetenbp

我有以下从 API 获得的日期2022-11-23 06:12:31

我想知道我的方法是否是最好的。

我需要以这种格式显示23 November 2022

我用来substringbefore删除时间部分,所以剩下以下内容:"2022-11-23"

我在用org.threeten.bp

val DAY_MONTH_YEAR_DISPLAY_FORMATTER =
    DateTimeFormatter.ofPattern("dd MMMM yyyy").withZone(ZoneOffset.systemDefault())

fun formatAsFullMonthDisplayDate(localDateTime: String): String {
    return try {
        LocalDate.parse(localDateTime.substringBefore(" "), DAY_MONTH_YEAR_DISPLAY_FORMATTER).buildDate()
    } catch (ignored: Exception) {
        ""
    }
}

private fun LocalDate.buildDate(): String {
    return buildString {
        append(this@buildDate.dayOfMonth)
        append(" ")
        append(this@buildDate.month)
        append(" ")
        append(this@buildDate.year)
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

你可以试试这个:

val inputDate = "2022-11-23 06:12:31"
val outputFormat = "dd MMMM yyyy"
val inputFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val outputFormatter = DateTimeFormatter.ofPattern(outputFormat)

val date = LocalDateTime.parse(inputDate, inputFormat)
val formattedDate = date.format(outputFormatter)

println(formattedDate) // "23 November 2022"
Run Code Online (Sandbox Code Playgroud)