关于时间的获取的一个问题,求大神指点。。。。

 、如何获取某个日期是当月的最后一天?   
当前日期加一天,若当前日期与结果的月份不相同,就是最后一天。 

取下一个月的第一天,下一个月的第一天 -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);
}