所以我有 2 个字符串
val a : String = "foo April 06 1994 bar"
val b : String = "April 06 1994" // this format can change
我有 4 个解析器的 seq
private val dateParsers = Seq(
JChronicDateParser,
UKDateParser,
USDateParser,
GermanDateParser
)
现在我解析它们的变量,在这两种情况下我都得到了成功的结果
dateParsers.map(parsers => {
parsers.parse(variable)//a or b
})
是否有任何有效的方法可以使字符串a
的解析失败,我希望解析器在带有日期部分的字符串中有任何额外信息或字符时失败?
我尝试过一些方法,例如不使用任何解析器,而是获取字符串并使用
对其进行格式化val dateFormat = new SimpleDateFormat("yyyy-MM-dd")
dateFormat.parse(a) // it fails in both cases so no good
最佳答案
您的 SimpleDateFormat
失败,因为您提供的格式错误。
尝试“MMMM dd yyyy”
。
此外,SimpleDateFormat
也不是一个很好的选择。从 java 8 开始,最好使用 DateTimeFormatter
代替:
DateTimeFormatter.ofPattern("MMMM dd yyyy").parse("April 06 1994")
至于你的另一个问题 - “有没有有效的方法来使字符串 a 的解析失败” - 我不知道你在问什么......抛出异常?返回选项
? 尝试
?
关于java - Scala/Java - 解析仅包含日期部分的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52329596/