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我的解决方案解决了您的问题,或者我应该进一步澄清?