calendar.getActualMaximum(calendar.DAY_OF_MONTH)的问题

例如:

在2017.03.29-31号

新建一个Calendar的単例

设置年:2017
设置月:2
int day = cal.getActualMaximum(Calendar.DAY_OF_MONTH)

得到日期为:3

例如:

在2017.03.01-28号

新建一个Calendar的単例

设置年:2017
设置月:2
int day = cal.getActualMaximum(Calendar.DAY_OF_MONTH)

得到日期为:28

原因:

Calendar类当你set的时候,并不会立即生效,只有等你get的时候才会生效

解决方法:

实例化Calendar之后,执行clear方法,清除Calendar中的缓存

Calendar calendar=Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, 2017);
calendar.set(Calendar.MONTH, 1);
int firstDay=calendar.getActualMinimum(calendar.DAY_OF_MONTH);
int lastDay=calendar.getActualMaximum(calendar.DAY_OF_MONTH);
System.out.println(2+"月第一天是:"+firstDay);
System.out.println(2+"月最后一天是:"+lastDay);
calendar.set(Calendar.DAY_OF_MONTH, lastDay);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(calendar.getTime()));
posted @   lllini  阅读(1020)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
阅读排行:
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 个人数据保全计划:从印象笔记迁移到joplin
· Vue3.5常用特性整理
· 重拾 SSH:从基础到安全加固
· 为什么UNIX使用init进程启动其他进程?
点击右上角即可分享
微信分享提示