、如何获取某个日期是当月的最后一天?
当前日期加一天,若当前日期与结果的月份不相同,就是最后一天。
取下一个月的第一天,下一个月的第一天 -1
public static void main(String[] args)
{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0); ----------我不明白为什么这里是0?
c.set(Calendar.DAY_OF_MONTH,30); ------这里为什么不是31天而是30天??
Calendar c1=(Calendar)c.clone(); -----对对象进行克隆 下面的这个月为什么是加1?
System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+"
"+c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH,1);
//这里又是为什么进行比对后可以确定是最后一天?什么意思?
if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH))
{ System.out.println(" 是最后一天 ");
}
else
{ System.out.println(" 不是取后一天 ");
}
}
java的Date和Calendar就是反人类的设计,如果不是维护老项目,推荐使用java8的time API
因为从0开始数!
月份从零开始代表的是一月份,类似的还有周,为什么用三十?这个随便填,30的结果不会是最后一天,这个没问题,比较就是拿了两个Calendar对象
比较,前一个加一天之后与后一个比较月份,相同不是最后一天,不同就是最后一天,这些都需要看Calendar的属性具体是怎么定义的,不是想当然
拿来用的
C和C1是同一个日期。现在把C加了1天之后,如果是本月最后一天,那它的月份就加1,跟原来C1不一样了。
而假如不是最后一天,那月份肯定就和C1是一样的。
月份是从0开始算的,一个月默认是30天
public static void main(String[] args) {
Calendar a=Calendar.getInstance();
a.set(Calendar.DATE, 1);//把日期设置为当月第一天
a.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天
int MaxDate=a.get(Calendar.DATE);
System.out.println("该月最大天数:"+MaxDate);
}