Calendar设置月份小问题

在调查一个报表的计算问题时,偶然发现报表会报错

根据错误信息看到,是生成SHEETName的时候,出现了重复的名字。SheetName都是以月份的英文简写作为名称的。而且是循环得到的。怎么会重复呢?这个报表在这个处理的时候是采用了一下方式:

 DateFormat df = new SimpleDateFormat("MMM", Locale.US);

       Calendar cal = Calendar.getInstance();

       for(int i=0;i<12;i++){

        cal.set(Calendar.MONTH,i);

         System.out.println(df.format(cal.getTime()));

       }

}

输出结果

【Wed Jan 30 11:04:18 GMT+08:00 2013

Sat Mar 02 11:04:18 GMT+08:00 2013

Sat Mar 02 11:04:18 GMT+08:00 2013

Tue Apr 02 11:04:18 GMT+08:00 2013

Thu May 02 11:04:18 GMT+08:00 2013

Sun Jun 02 11:04:18 GMT+08:00 2013

Tue Jul 02 11:04:18 GMT+08:00 2013

Fri Aug 02 11:04:18 GMT+08:00 2013

Mon Sep 02 11:04:18 GMT+08:00 2013

Wed Oct 02 11:04:18 GMT+08:00 2013

Sat Nov 02 11:04:18 GMT+08:00 2013

Mon Dec 02 11:04:18 GMT+08:00 2013】

其他月份都没问题,二月就“出错了”。这是怎么回事呢?原来Calendar在进行set的时候很贴心的去检查set后的时间是否合法。因为今天是12月30号,设置月份为2月之后,2月是没有30号的。而所谓的2月30号也就是3月2号。

避免这个问题最简单的修改方式就是先把日期调整到1号,每个月都有1号嘛。这样就不会出现类似问题了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值