Scala 从解析的日期获取年、月和日

Scala 从解析的日期获取年、月和日,scala,Scala,我有以下代码来验证给定日期格式的日期: val df = new SimpleDateFormat("MM/dd/yyyy"); df.setLenient(false); try { val date = df.parse("11/13/2014"); } catch { case pe: ParseException => println("date error") } 现在,我需要得到三个变量中的年、月和日。实现这一目标的最佳方式是什么?请注意,我需要一个基于性能的解决

我有以下代码来验证给定日期格式的日期:

val df = new SimpleDateFormat("MM/dd/yyyy");
df.setLenient(false);

try {
   val date = df.parse("11/13/2014");
}
catch {
  case pe: ParseException => println("date error")
}
现在,我需要得到三个变量中的年、月和日。实现这一目标的最佳方式是什么?请注意,我需要一个基于性能的解决方案,因为我需要验证/转换数千个日期。

java.time 使用Java8和新的日期/时间API。更好、更清洁、经得起未来考验

val dateFormat = "MM/dd/yyyy"
val dtf = java.time.format.DateTimeFormatter.ofPattern(dateFormat)
val dateString = "11/13/2014"
val d = java.time.LocalDate.parse(dateString, dtf)
val year = d.getYear
2014年

十一,

您可以访问枚举对象

val month = d.getMonth
11月

十三,

一旦将输入解析为,就可以使用getYear等获取年份

要进行验证,请捕获为无效输入生成的

如果您想跳过正确的日期验证(例如性能验证),只提取Y、M、D-您可以拆分字符串并获取整数,如下所示

val ymd = dateString.split("/").map(_.toInt)
ymd: Array[Int] = Array(11, 13, 2014)
java.time 使用Java8和新的日期/时间API。更好、更清洁、经得起未来考验

val dateFormat = "MM/dd/yyyy"
val dtf = java.time.format.DateTimeFormatter.ofPattern(dateFormat)
val dateString = "11/13/2014"
val d = java.time.LocalDate.parse(dateString, dtf)
val year = d.getYear
2014年

十一,

您可以访问枚举对象

val month = d.getMonth
11月

十三,

一旦将输入解析为,就可以使用getYear等获取年份

要进行验证,请捕获为无效输入生成的

如果您想跳过正确的日期验证(例如性能验证),只提取Y、M、D-您可以拆分字符串并获取整数,如下所示

val ymd = dateString.split("/").map(_.toInt)
ymd: Array[Int] = Array(11, 13, 2014)

易于理解的请阅读DateAPI的文档。试试看,然后在这里问你是否还有问题。它说getYear不推荐使用,这就是为什么我要求我在任何情况下都使用joda time或java.time。创建一个calendar实例。使用日历的
setTime
方法将其设置为您的日期。现在你有了约会的日历。现在,使用弃用信息中给出的提示,您将获得您的年份等@SarveshKumarSingh为什么不将其作为答案写下来?很简单。。。请阅读DateAPI的文档。试试看,然后在这里问你是否还有问题。它说getYear不推荐使用,这就是为什么我要求我在任何情况下都使用joda time或java.time。创建一个calendar实例。使用日历的
setTime
方法将其设置为您的日期。现在你有了约会的日历。现在,使用弃用消息中给出的提示,您将获得您的年份等@SarveshKumarSingh为什么不将其作为答案编写?如果您只拆分字符串,解析
LocalDate
有什么意义?使用
LocalDate
methods:,等等。OP提到了“验证”。将其解析为日期是对其是否为日期的最终验证,而不仅仅是斜杠分隔的整数(例如“65/82/1314”)。OP可以根据需要自由使用尽可能少/多的解决方案,他说:“现在,我需要的是在三个变量中获得年、月和日。”如果你只拆分字符串,解析
LocalDate
有什么意义?使用
LocalDate
methods:,等等。OP提到了“验证”。将其解析为日期是对其是否为日期的最终验证,而不仅仅是斜杠分隔的整数(例如“65/82/1314”)。OP可以根据需要自由使用尽可能少/多的解决方案,他说:“现在,我需要的是获得三个变量中的年、月和日。”。