Java常用类:Calendar

Java常用类:Calendar

1. 处理日期时间的类有java.util.Date和java.util.Calendar

2. Date类从java1.0就开始存在了,到现在大部分方法都已经过时了,所以不推荐使用.比如Date有6个构造器,但其中有4个已经不推荐使用了.

3. Calendar是一个抽象类.本身不能被实例化,只能通过getInstance()的方法来获取实例对象.Calendar.getInstance()根据TimeZone,Locale类获取特定的Calendar

4. Calendar是所有日历类的模板,例如GregorianCalendar(公历)

5. Date和Calendar都是表示日期的工具类,二者之间可以任意转换.Calendar的getTime()方法返回Date

程序清单:

 
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
 
public class DateTest {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        Calendar c = Calendar.getInstance(Locale.CHINESE);
        
        // 有Calendar获取Date
        Date d = c.getTime();
        System.out.println(d);
        
        // 获取年月日
        System.out.println("年:"+c.get(Calendar.YEAR));
        System.out.println("月:"+c.get(Calendar.MONTH));
        System.out.println("日:"+c.get(Calendar.DATE));
        
        // 时间计算
        c.add(Calendar.YEAR, -1);
        System.out.println("前1年:"+c.getTime());
        
        // 设定时间,Calendar有两种模式lenient(宽松模式)和non-lenient.当Calendar处于宽松模式下,每个
        // 时间字段都可以超出它允许的范围;在处于非宽松模式下,当时间字段超出范围时,会抛出异常
        //c.setLenient(false);//容错开发,false可关闭容错,进行日期合法性检查
        
        
        c.set(2009, 0, 32);// 容错性,当字段值超过了正常范围时,上级字段会自动增加
        
        // set方法延迟性,使用set方法后,日历时间不会立即更新,要等到下次调用get(),getTime(),getTimeinMillis(),add()或roll()
        // 时,才会重新计算日历的时间.这样也避免了多次调用set方法带来的多次计算.
        
        System.out.println("设定时间:"+c.getTime());
        
        // add和roll区别,add的上级字段会自动增加
        c.set(2008,11,31);
        c.add(Calendar.MONTH, 1);
        System.out.println("add():"+c.getTime());//2009-01-31  年份增加了
        
        c.set(2008,11,31);
        c.roll(Calendar.MONTH, 1);
        System.out.println("roll():"+c.getTime());//2008-01-31  年份没有改变
        
    }
 
}

你可能感兴趣的:(Java常用类:Calendar)