JAVA Calendar设置时间,月份总是加1

本文介绍了一个使用Java Calendar类处理特定月份日期时遇到的问题,并提供了解决方案。具体来说,如果未正确设置天数,可能会导致月份自动增加。文章通过实例说明了如何避免这一错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


代码:

		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.MONTH, month-1 );
		calendar.set(Calendar.YEAR, year);
		System.out.println(calendar.get(Calendar.MONTH));
		return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);



测试的结果是,当月份参数month的实际天数小于31天时,打印的月份结果都是加1

网上找到的资料:http://topic.csdn.net/u/20071030/11/cc414f35-5d1b-4bae-a1c3-21e9a7fa662e.html

我测试时间是2011/10/31,代码里没设Calendar.DAY_OF_MONTH,则日期为当前的31号,而例如9月份是30天,则月份自动加1,结果calendar的日期为2011/10/01;假如传入的参数是2月份,2011年2月份共28天,那calendar的日期为2011/03/03

解决方法:

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 1);  //设置日期
        calendar.set(Calendar.MONTH, month-1 );
        calendar.set(Calendar.YEAR, year);        
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值