Scala通用格式转换Determain

时间:2016-07-27 08:26:05

标签: scala localdate

请参阅此功能,将String转换为LocalDate

  def getLocalDate(date: String): LocalDate = {

    LocalDate.parse(date, format.DateTimeFormatter.ofPattern("dd MMM, yyyy"))
  }

用法:

val date = "01 Jan, 2010"
val localDate = getLocalDate(date)

所以如果我有不同格式的日期:

val date  = "01 Jan, 2010"

是否可以启用我的功能以支持多种格式而不仅支持1?

1 个答案:

答案 0 :(得分:1)

考虑使用parse

将来电调用scala.util.Try
def getLocalDate(date: String): LocalDate = {
  val pattern1 = DateTimeFormatter.ofPattern("dd MMM, yyyy")
  val pattern2 = DateTimeFormatter.ofPattern("dd MMM yyyy")
  val pattern3 = DateTimeFormatter.ISO_LOCAL_DATE

  val result = Try {
    LocalDate.parse(date, pattern1)
  } recover {
    case _ => LocalDate.parse(date, pattern2)
  } recover {
    case _ => LocalDate.parse(date, pattern3)
  }

  result.get
}
无法解析字符串时,

parse抛出DateTimeParseException。人们可以抓住它并再次尝试另一种模式。

每个步骤返回后的值是成功还是失败。如果成功,则忽略恢复。

最后致电get以返回LocalDate中包含的Success或重新抛出Failure捕获的异常。