java - Scala/Java - 解析仅包含日期部分的字符串

标签 java scala

所以我有 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/

相关文章:

java - DynamicTree编辑根节点Java swing

java - CSRF - 仅在第一次登录

java - 调用 Jersey 服务 (PUT) 时发送电子邮件通知的设计问题

java - void 变量有什么用?

scala - 是否可以在 Scala 中写下依赖函数类型?

scala - 如何解析 Scala 中的 future 列表

java - 如何保存 SQL 查询的结果集以便多次使用?

java - 如何在Scala中使用JCache?我收到编译器类型错误 : found String required K

scala - org.apache.spark.sql.AnalysisException : Can't extract value from probability

scala - 迭代类型安全配置中的字段