美文网首页
Java核心类库 -- 04 日期处理类

Java核心类库 -- 04 日期处理类

作者: ql2012jz | 来源:发表于2017-08-26 20:47 被阅读17次

    日期处理类

    目录导读
    Date(已过时)
    Calendar(表示日历)
    DateFormat(格式化日期和时间)
    SimpleDateFormat(DateFormat的子类)

    1.Date(过时,不推荐使用)
    java.util.Date

    Date类来处理日期、时间
    
    (1)构造方法
        public Date();//生成当前日期的Date
        public Date(long date);//以date为时间创建Date对象,该对象是和GMT 1970年1月1日00:00之间的时间差,单位是毫秒值
    
    (2)方法
        1.返回当前时间的毫秒值:Date --> 毫秒值(long)
        public long getTime(); //(与GMT1970年1月1日00:00之间的时间差)
        
        2.毫秒值 --> Date
        public Date(long date);
        void setTime(long time); 设置该Date对象的时间。
    

    2.Calendar 类
    java.util.Calendar
    表示日历,是个抽象类

    (1)类变量(field)
        YEAR
        MONTH
        DATE
        HOUR
        ...
    
    (2)方法   
        1.创建实例对象(是根据TimeZone、Local类来获取特定的Calendar)
        (1) public static Calendar getInstance();//使用默认的TimeZone、Local
        (2) static Calendar getInstance(TimeZone zone)  ;//给定TimeZone
        (3) static Calendar getInstance(Locale aLocale) ;// 给定Loacal
        (4) public static Calendar getInstance(TimeZone zone, Locale aLocale)  ;  // 给定TimeZone、Loacal
        
        2.Calendar->Date
            Calendar c = Calendar.getInstance();
            Date d = c.getTime();
        3.Date->Calendar
            由于没有Calendar/GregorianCalendar的构造器可以直接接受Date对象,只能通过Calendar的方法来接受
            Calendar c = Calendar.getInstance();
        c.setTime(date);
    
        4.访问日期的方法
        public int get(int field) ;//返回指定日历字段值,如年,月
        public int getActualMaximum(int field)  ;//返回指定日历字段可能拥有的最大值,如月份为11
        public int getActualMinimum(int field)  ;//返回指定日历字段可能拥有的最小值,如月份为0
        public long getTimeInMillis()  ;//返回该日历的毫秒值
    
        5.修改日期
        (1)abstract void add(int field, int amount) ;//根据日历规则,给指定的日历字段添加或减去指定的时间量,当被修改的字段超过它允许的范围时,会发生向上一级字段进位的现象。如果下一级字段也需要改变,那该字段(下一级的)会修正到变化最小的值。(此方法为抽象方法,实际中调用的是其子类的方法) 
        (2)public void roll(int field, int amount)  ;//与add()的用法类似,区别在于当被修改的字段超过它允许的范围是并不会向上一级进位,但是对于修正下一级的字段的处理方式同add(),即该字段(下一级的)会修正到变化最小的值。
        (3)void set(int field, int value);//对给定的日历字段设定值,注意默认情况下是不会对参数做检查(超过范围会向上一字段进位)。详情见下面的容错性
        (4)void set(int year, int month, int date)  //年月日
        (5)void set(int year, int month, int date, int hourOfDay ,  int minute)  //年月日时分
        (6)void set(int year, int month, int date, int hourOfDay, int minute, int second)  //年月日时分秒
        
        6.calendar的容错性
        Calendar有两种解释日历的模式:lenient、non-lenient
    
        默认是处于lenient(有较好的容错性,接受超出范围的数字,会向上一级字段进位)
        void setLenient(boolean lenient)  ;//关闭容错性
        执行setLenient(false)后,会处于non-lenient模式,则会进行严格的参数范围检查,如果超出范围就会抛出异常。
    
        7.set()方法的延迟修改
        set(f, value) 方法将f字段更改为value,虽然Calendar所代表的字段立即更改,但其代表的时间却不会立即修改直到下次调用get(), getTime(), getTimeInMillis(), add(), roll()时才会重新计算日历时间
    

    3.DateFormat 类
    java.text.DateFormat
    是一个抽象类,用于表示格式化日期、时间。

    (1)获得实例
        public static DateFormat getInstance(); // 
    (2)Date <---> String
        1.Date ---> String
        public String format(Date date); 
        例如:Date d = new Date();
              String s = DateFormat.getDateInstance().format(d); //2017-8-16
        
        2.String ----> Date(要处理CaseException的异常)
        Date parse(String source);  
        例如:String s = "2012-12-22";
              DateFormat.getDateInstance().parse(s); //只能解析这种形式的字符串,不够灵活
    

    4.SimpleDateFormat(DateFormat的子类)
    java.text.SimpleDateFormat
    为了克服DateFormat的不灵活性,引入了SimpleDateFormat,它可以非常灵活的格式化Date
    也可以用于解析各种格式的日期和字符串。

    (1)获得实例
        public SimpleDateFormat(); //格式成默认的字符串, "17-8-16 下午6:39"
        public SimpleDateFormat(String pattern); //格式成自定义的pattern形式的字符串,如"yyyy年MM月dd日""
    (2)Date <---> String    
        1.Date ---> String
        //该方法为其父类DateFormat的方法
        public String format(Date date); //按上面的自定义格式化成String
        
        2.String ----> Date(要处理CaseException的异常)
        //该方法为其父类DateFormat的方法
        public Date parse(String source); //按上面自定义的格式解析成Date    

    相关文章

      网友评论

          本文标题:Java核心类库 -- 04 日期处理类

          本文链接:https://www.haomeiwen.com/subject/gzevdxtx.html