我目前正在使用以下函数设置日期
。
private Date getDate (int day, int month, int year){
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day);
Date date = calendar.getTime();
return date;
}
但是,如果输入 (31, 6, 2014),日期将简单地更改为 2014 年 7 月 1 日。如果我的输入如上所述,有没有办法检查日期是否有效?
感谢您的帮助。
最佳答案
您获得 2014 年 7 月 1 日作为输出的原因:
- 当您将月份设置为month-1时,在本例中您将月份设置为六月,因为calendar.set()方法中的月份参数是从0开始的(一月的索引为0)<
- 6 月有 30 个日历日,因此如果您将这一天设置为 31,它将溢出到 7 月 1 日;如果您将天数设置为 44,则输出将为 2014 年 7 月 14 日
要解决这个问题,请将 lenient 设置为 false:
calendar.setLenient(false);
如果日期超出范围,将会抛出异常
关于Java 检查日期(由整数组成)是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23581169/