A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨强彪 中级黑马   /  2015-3-8 11:53  /  870 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Calendar类被设计来取代Date类(Date类存在一些缺陷),处理日期和时间,Calendar类提供了大量访问、修改时间日期的方法

Calendar类是一个抽象类,不能用构造器来创建Calendar对象,但可以通过静态的getInstance方法获取对象。

常规用法示例:

public class TestCalendar {

/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  Calendar c = Calendar.getInstance();
  //取出年
  System.out.println(c.get(Calendar.YEAR));
  //取出月
  System.out.println(c.get(Calendar.MONTH));
  //取出日
  System.out.println(c.get(Calendar.DATE));
  //设置年月日时分秒
  c.set(2009, 9, 29, 9, 45, 30);
  System.out.println(c.getTime());
  //将Calendar推前一年
  c.add(Calendar.YEAR, -1);
  System.out.println(c.getTime());
  //将Calendar的月,向前推8个月
  c.roll(Calendar.MONTH, -8);
  System.out.println(c.getTime());
}

}

add(int field, int amount)功能强大,主要用于改变Calendar特定字段的值
使用规则1:当被修改的字段超出它允许的范围时,会发生进位,即上一级字段也会增大
使用规则2:如果下一级字段也需要改变,那么该字段会修正到变化的最小值(如:2009年8月31日,向前推6个月,为2009年2月28日)

roll的使用规则与add不同的是roll不会发生进位,其他的地方与add相似

Calendar具有容错性,例如传入不合法参数,设置MOUTH字段的值为13,将会导致YEAR字段加1
可以通过setLenient(false)方法关闭容错性,让他进行严格的参数检查

set方法延迟修改

使用set方法改变某个字段的值时,Calendar所代表的时间不会马上被修改,直到调用使用get,add等方法时才会重新计算时间。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马