如何检查scala中的闰年

时间:2016-04-19 09:08:55

标签: java scala

我有一个字符串格式的日期。我想根据月份检查日期是否正确。例如,1月不应超过31。

因此,32/1/2016称为无效日期。

def check(date:String,format:String)={
  val splittedDate=date.split("/")
  val res=(fullDay(2).toInt) <= LocalDate.of(fullDay(0).toInt,fullDay(1).toInt,fullDay(2).toInt).lengthOfMonth()
  res
}

如果我们称之为检查(&#34; 2015/4/5&#34;,&#34; yyyy / mm / dd&#34;),它将正常工作。 但不要使用支票(&#34; 2015/4/5&#34;,&#34; dd / yyyy / mm&#34;)

1 个答案:

答案 0 :(得分:1)

只需使用java.time来解析/创建日期。

如果您的日期无效,您将获得例外。例如:

scala> LocalDate.of(2016, 2, 31)
java.time.DateTimeException: Invalid date 'FEBRUARY 31'
  at java.time.LocalDate.create(LocalDate.java:431)
  at java.time.LocalDate.of(LocalDate.java:269)
  ... 33 elided

scala> LocalDate.of(2016, 2, 30)
java.time.DateTimeException: Invalid date 'FEBRUARY 30'
  at java.time.LocalDate.create(LocalDate.java:431)
  at java.time.LocalDate.of(LocalDate.java:269)
  ... 33 elided

scala> LocalDate.of(2016, 2, 29)
res15: java.time.LocalDate = 2016-02-29

scala> LocalDate.of(2015, 2, 29)
java.time.DateTimeException: Invalid date 'February 29' as '2015' is not a leap year
  at java.time.LocalDate.create(LocalDate.java:429)
  at java.time.LocalDate.of(LocalDate.java:269)
  ... 33 elided