将小写短工作日解析为 Java 8 的时间 DayOfWeek
Parse lowercase short weekday to Java 8's time 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
s。
相反,我必须在解析之前像这样清理字符串:
val capitalized = this.lowercase().replaceFirstChar { it.uppercase() }
这感觉很麻烦。
我使用的 api 是错误的还是这是一个巨大的绊脚石?
你没有用错 afaics。好像不允许小写开头
您必须使用 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
}
我有一个字符串,例如“周一”或“周二”或“周日”。
我想将其解析为 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
s。
相反,我必须在解析之前像这样清理字符串:
val capitalized = this.lowercase().replaceFirstChar { it.uppercase() }
这感觉很麻烦。 我使用的 api 是错误的还是这是一个巨大的绊脚石?
你没有用错 afaics。好像不允许小写开头
您必须使用 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
}