Java 检查日期(由整数组成)是否有效

标签 java date

我目前正在使用以下函数设置日期

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/

相关文章:

ruby - 按月和年将 Ruby 日期数组分组为哈希

java - 我的时间介于开始时间和结束时间之间

java - Tomcat 中的自定义 MBean - 创建 InitialContext 时找不到 javaURLContextFactory

java - 如何从列表中获取字节数组?

java - solr autoSoftCommit 将打开新的搜索器?

java - Tapestry - 从 tml 向方法传递参数

date - 如何在 Grails 中将日期值作为参数传递

c# - 英文日期差异

php - 如何确定当前语言环境在 PHP 中是否具有 24 小时或 12 小时时间格式?

java - Flume + ElasticSearch 接收器 TTL