将小写短工作日解析为Java8的time dayofweek

7dl7o3gd  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(356)

我有一个字符串,例如“mon”或“tue”或“sun”。我想把它解析为一个 DayOfWeek (如果不成功,则为空)。
我正在使用kotlin,但我想java的人也会明白我想做什么:

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

这不管用,我只是想 null S
相反,我必须在解析字符串之前对其进行如下清理:

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

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

cwdobuhd

cwdobuhd1#

您必须使用datetimeformatterbuilder并将ParseCaseSensitive设置为:

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
}
pftdvrlh

pftdvrlh2#

你没有用错afaics。似乎不允许使用小写开头

相关问题