gpt4 book ai didi

Scala如何通过模式获取LocalDate

转载 作者:行者123 更新时间:2023-12-01 12:26:41 28 4
gpt4 key购买 nike

我尝试获取 LocaDate按格式,所以我采用了这个函数来接收日期并搜索要解析的格式:

def getLocalDate(date: String): LocalDate = {

val pattern1 = DateTimeFormatter.ofPattern("dd MMM, yyyy")
val pattern2 = DateTimeFormatter.ofPattern("dd MMM yyyy")
val pattern3 = DateTimeFormatter.ofPattern("yyyy-MMM-dd")
val pattern4 = DateTimeFormatter.ofPattern("dd/MM/YYYY")
val pattern5 = DateTimeFormatter.ISO_LOCAL_DATE

val result = Try {
LocalDate.parse(date, pattern1)
} recover {
case _ => LocalDate.parse(date, pattern2)
} recover {
case _ => LocalDate.parse(date, pattern3)
} recover {
case _ => LocalDate.parse(date, pattern4)
} recover {
case _ => LocalDate.parse(date, pattern5)
}

result.get
}

用法:
var s1 = "01/08/2010"
getLocalDate(s1)

但出现错误:
java.time.format.DateTimeParseException: Text '01/08/2010' could not be parsed at index 0

而且我不知道为什么以及出了什么问题。

最佳答案

import java.time.LocalDate
import java.time.format.DateTimeFormatter

import scala.util.Try

def getLocalDate(date: String): java.time.LocalDate = {
val pattern1 = DateTimeFormatter.ofPattern("dd MMM, yyyy")
val pattern2 = DateTimeFormatter.ofPattern("dd MMM yyyy")
val pattern3 = DateTimeFormatter.ofPattern("yyyy-MMM-dd")
val pattern4 = DateTimeFormatter.ofPattern("dd/MM/yyyy")
val pattern5 = DateTimeFormatter.ISO_LOCAL_DATE

val result = Try {
LocalDate.parse(date, pattern1)
} recover {
case _ => LocalDate.parse(date, pattern2)
} recover {
case _ => LocalDate.parse(date, pattern3)
} recover {
case _ => LocalDate.parse(date, pattern4)
} recover {
case _ => LocalDate.parse(date, pattern5)
}

result.get
}
var s1 = "01/08/2010"
getLocalDate(s1)

这在 REPL(Scala 2.11.8,Java 1.8)中运行良好。

您的错误是在最后一个模式中包含“YYYY”而不是“yyyy”。
另外,看看包 nscala-time。也许它会为您的应用程序提供更好的绑定(bind)。

关于Scala如何通过模式获取LocalDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38737986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com