-2

请看这个转换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 ?

4

1 回答 1

2

考虑将调用链接到parseusingscala.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
}

parseDateTimeParseException无法解析字符串时抛出。人们可以抓住它并用另一种模式再试一次。

在每一步之后返回值是成功或失败。如果成功,则忽略以下恢复。

最后调用get返回LocalDate包含在Success或重新抛出由Failure.

于 2016-07-27T09:15:58.430 回答