Kotlin Android / Java字符串DateTime格式,API21

wit*_*One 5 java datetime android formatter kotlin

我想将字符串日期时间转换为格式化的字符串。例如,将“ 2018-12-14T09:55:00”更改为“ 14.12.2018 09:55”作为String => Textview.text

如何使用Kotlin或Java for Android做到这一点?

孙兴斌*_*孙兴斌 13

解析它LocalDateTime然后格式化它:

LocalDateTime localDateTime = LocalDateTime.parse("2018-12-14T09:55:00");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
String output = formatter.format(localDateTime);
Run Code Online (Sandbox Code Playgroud)

如果这不适用于api21,则可以使用:

SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm");
String output = formatter.format(parser.parse("2018-12-14T09:55:00"));
Run Code Online (Sandbox Code Playgroud)

或导入ThreeTenABP。

  • 您不需要使用 ThreeTenABP,请参阅此:https://developer.android.com/studio/write/java8-support#library-desugaring (5认同)
  • 我已经尝试过了。但是我在 LocalDateTime.parse 上给出了一个错误:“调用需要 api 级别 26,当前 api 是 21” (4认同)
  • 太好了,它有效。我在你的个人资料中看到你在土耳其的伊兹密尔,所以你正在为你的语言环境寻求日期时间格式(明智的)。这是内置于 Java 中的。所以我建议`DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).withLocale(Locale.forLanguageTag("tr"));`。它更长,但避免手动输入格式模式字符串是值得的,这也更有助于国际化。 (2认同)

ari*_*fng 5

Kotlin API级别26或更高:

val parsedDate = LocalDateTime.parse("2018-12-14T09:55:00", DateTimeFormatter.ISO_DATE_TIME)
val formattedDate = parsedDate.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"))
Run Code Online (Sandbox Code Playgroud)

低于API等级26:

val parser =  SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
val formattedDate = formatter.format(parser.parse("2018-12-14T09:55:00"))
Run Code Online (Sandbox Code Playgroud)