不知道大家有没有过这样的问题,就是你在获取时间的时候,会少写get方法,而直接获取的是Calendar.DAY_OF_MONTH,结果发现不是自己想要的值,为什么呢? 今天我翻阅了api文档,查看了一下关于Calendar中的DAY_OF_MONTH字段数字,没错,它被称为get 和 set 的字段数字,而且你细心一点就会发现,它是这样被定义的: public static final int DAY_OF_MONTH你会不会有些疑问呢?这些字段数字都是静态的常量值,那为什么还能对其修改呢?还可以使用add,set等方法对其设置呢? 我对这个问题开始也很迷惑,百度了之后,才大概有些明白,我的理解是这样的: 你可以把这个Calendar中的YEAR的常量值理解为它的小名,打个比方说,一个人大名叫张三,你可以叫他的小名为小张,这个张三就相当于YEAR,而这个小张就是YEAR的常量值,为什么要这么设置呢? 这就要和字段值相联系了。其实,这些设置的操作是对具体的时间的修改,而不是对这些字段值的修改,获取的也是修改后的时间值。之所以称之为字段值,就是应为方便设置:简单地说就是将日期分为几段,如图所示: YEAR MONTH DAY_OF_MONTH ... 1 2 5 ... (相应的字段值请看Calendar的常量值) 那么要是对某一部分进行修改的话,如设置年份为2013年,则为set(1,2013)