Scala:尝试不同的日期格式

时间:2017-02-13 13:31:39

标签: scala

使用不同日期格式解析字符串的scala,优雅,实用的方法是什么?

假设我有

val formats = Set(
  new SimpleDateFormat("YYYY-MM-dd"),
  new SimpleDateFormat("MM/DD/YYYY")
)

我想尝试使用第一种格式解析字符串,这将成功解析:

def parse(s:String): Option[Date] = {
  formats.map {??????????????}
}

1 个答案:

答案 0 :(得分:1)

您可以将列表转换为Stream(以确保只完成最少数量的解析尝试),然后使用TrycollectFirst

def parse(s:String): Option[Date] = {
  formats.toStream.map(f => Try(f.parse(s))).collectFirst {
    case Success(d) => d
  }
}

println(parse("2017-02-01"))  // Some(Sun Jan 01 00:00:00 IST 2017)
println(parse("02/01/2017"))  // Some(Sun Jan 01 00:00:00 IST 2017)
println(parse("23:00"))  // None