Calendar设定月份时要注意日期

先看下代码

public static void main(String[] args) {
   int dataMonth = 4;

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    Calendar dataCalendar = Calendar.getInstance();
    //今天日期,2021-03-31
    System.out.println("今天:" + dateFormat.format(dataCalendar.getTime()));

    //设定月份为4月
    dataCalendar.set(Calendar.MONTH, dataMonth - 1);
    System.out.println("目标:" + dateFormat.format(dataCalendar.getTime()));
}

代码很简单,那结果是多少呢?

今天:2021-03-31
目标:2021-05-01

???怎么是5月1号?看了下日历,知道原因了,4月只有30天,没有31号,所以就把多出来的1天自动加上,成了5月1号了!

所以这块在设定的时候要注意了,平常可能是逻辑正常的,但到月底的时候,问题就显出来了!

上一篇:日期操作类(DateFormat与SimpleDateFormat)的区别和使用详解


下一篇:给指定日期加上固定时间