我有一个字符串格式的日期。我想根据日期检查日期是否正确。例如,一月不得超过31。
因此,2016年1月32日的保质期为无效日期。
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
}
如果我们调用check(“ 2015/4/5”,“ yyyy / mm / dd”)会很好用。
但不能使用check(“ 2015/4/5”,“ dd / yyyy / mm”)。
最佳答案
只需使用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