Scala 通用格式转换确定
Scala generic format convert determain
请查看将 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"
是否可以让我的函数支持多种格式而不是只支持一种格式?
考虑使用 scala.util.Try
链接对 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
。人们可以抓住它并用另一种模式再试一次。
在每个步骤之后 returned 值是成功或失败。如果成功,则忽略以下恢复。
最终调用 get
到 Success
中包含的 return LocalDate
或重新抛出被 Failure
.
捕获的异常
请查看将 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"
是否可以让我的函数支持多种格式而不是只支持一种格式?
考虑使用 scala.util.Try
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
。人们可以抓住它并用另一种模式再试一次。
在每个步骤之后 returned 值是成功或失败。如果成功,则忽略以下恢复。
最终调用 get
到 Success
中包含的 return LocalDate
或重新抛出被 Failure
.