-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

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
}

parseDateTimeParseException文字列を解析できない場合にスローします。それをキャッチして、別のパターンで再試行できます。

各ステップの後に返される値は、成功または失敗です。成功の場合、次の回復は無視されます。

最後に、 に含まれるget戻り値を呼び出すか、 によってキャッチされた例外を再スローします。LocalDateSuccessFailure

于 2016-07-27T09:15:58.430 に答える