将小写的短工作日解析为Java8的时间DayOfWeek

我有一个字符串,例如“mon”或“tue”或“sun”。我想将其解析为 a DayOfWeek(如果不成功则为 null)。

我正在使用 Kotlin,但我想 Java 人员也会明白我想做什么:

private fun String.parseToDayOfWeek(pattern: String = "EE") =
    try {
        DateTimeFormatter.ofPattern(pattern, Locale.US).parse(this, DayOfWeek::from)
    } catch (e: Exception){
        null
    }

这不起作用,我只是得到nulls。

相反,在我解析它之前,我必须像这样清理字符串:

val capitalized = this.lowercase().replaceFirstChar { it.uppercase() }

这感觉很麻烦。我使用的 api 是错误的还是这是一个巨大的绊脚石?

回答

您必须使用 DateTimeFormatterBuilder 并设置 parseCaseInsensitive:

private fun String.parseToDayOfWeek(pattern: String = "EE") =
try {
    val formatter = DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern(pattern)
        .toFormatter(Locale.US);

    formatter.parse(this, DayOfWeek::from)
} catch (e: Exception){
    null
}


以上是将小写的短工作日解析为Java8的时间DayOfWeek的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>