Scala通用格式转换程序

Scala通用格式转换程序,scala,localdate,Scala,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,

请参阅将
字符串
转换为
本地日期
的函数:

  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种格式?

考虑使用
scala.util将调用链接到
parse
。试试

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
返回
Success
中包含的
LocalDate
,或者重新显示
失败捕获的异常

有无限格式。它如何知道这个字符串的格式?您必须传入格式。此ISO_LOCAL_日期在pattern3中的含义是什么?这是一个示例模式。请看“预定义格式设置程序”一节,我是否可以添加其他格式,例如yyyy-MM-dd-->2016-01-06?DateTimeFormatter.of模式(“yyyy-MM-dd”)@davidhol我的解决方案解决了您的问题,或者我应该进一步澄清?