六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 63|回复: 0

java Calendar 使用中的一个不容易察觉错误

[复制链接]

升级  80%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
40
 楼主| 发表于 2013-2-3 13:37:24 | 显示全部楼层 |阅读模式
使用Calendar取某月最大天数时,犯了一个很隐蔽的错误:
  public static int getLastDayOfMonth(int year, int month) {    Calendar c = GregorianCalendar.getInstance();    c.set(Calendar.YEAR, year);    c.set(Calendar.MONTH, month - 1); // JAN. is 0    c.set(Calendar.DATE, 1);  // 必不可少    return c.getActualMaximum(Calendar.DAY_OF_MONTH);  } 

少了
    c.set(Calendar.DATE, 1);  // 必不可少
这一行后,如果执行代码时的日期是30号或31号,则返回31.
单元测试时很难发现,问题非常隐蔽,需小心.

同理,DAY_OF_WEEK,HOUR_OF_DAY 也有类似问题
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表