我有以下代码来验证给定日期格式的日期:
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")
}
现在,我需要的是获得三个变量中的年,月和日。实现这一目标的最佳方法是什么?请注意,我需要一个基于性能的解决方案,因为我需要验证/转换数千个日期。
答案 0 :(得分:7)
使用Java 8和新的日期/时间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 monthNumber = d.getMonthValue
11
您可以访问Month
枚举对象。
val month = d.getMonth
Month.NOVEMBER
val dayOfMonth = d.getDayOfMonth
13
将输入解析为java.time.LocalDate
后,您可以使用getYear获取年份等。
要验证,请捕获为无效输入生成的DateTimeParseException
。
如果您想跳过正确的日期验证(例如性能)并只提取Y,M,D - 您可以拆分字符串并获取整数,如下所示
val ymd = dateString.split("/").map(_.toInt)
ymd: Array[Int] = Array(11, 13, 2014)