微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将小写的短工作日解析为 Java 8 的时间 DayOfWeek

我有一个字符串,例如“星期一”或“星期二”或“太阳”。 我想将其解析为 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
    }

这不起作用,我只是收到了 null

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

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

您没有使用错误的 afaics。好像不允许小写开头

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。