java的时间处理类----日历类Calendar类,TimeZone类时区相关类

Calendar类

定义:
  • Calendar是一个抽象类,它用于表示日历
  • 不能使用构造器来创建Calendar对象。但它提供了几个静态getInstance()方法来获取Calendar对象,这些方法根据TimeZone,Locale类来获取特定的Calendar,如果不指定TimeZone、Locale(时区),则使用默认的TimeZone、Locale来创建Calendar
Calendar与Date的相互转换
  1. Calendar -----> Date:通过Calendar的getTime();获得Date对象

import java.util.Calendar;
import java.util.Date;

public class Time {
    public static void main(String[] args) throws InterruptedException {
        Calendar c = Calendar.getInstance();
        Date time = c.getTime();
        System.out.println(c);
        System.out.println(time);
    }
}

  • 结果
    java的时间处理类----日历类Calendar类,TimeZone类时区相关类
  1. Date: ----->Calendar:通过Calendar的setTime(Date date)方法

import java.util.Calendar;
import java.util.Date;

public class Time {
    public static void main(String[] args) throws InterruptedException {
       Date date = new Date();
       Calendar c = Calendar.getInstance();
       c.setTime(date);
        System.out.println(date);
        System.out.println(c);
    }
}

  • 结果
    java的时间处理类----日历类Calendar类,TimeZone类时区相关类
Calendar类的常用方法
  • void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • int get(int field):返回指定日历字段的值。
  • int getActualMaximum(int field):返回指定日历字段可能拥有的最大值。例如月,最大值为11。
  • int getActualMinimum(int field):返回指定日历字段可能拥有的最小值。例如月,最小值为0。
  • void roll(int field, int amount):与add()方法类似,区别在于加上amount后超过了该字段所能表示的最大范围时,也不会向上一个字段进位。
  • void set(int field, int value):将给定的日历字段设置为给定值。
  • void set(int year, int month, int date):设置Calendar对象的年、月、日3个字段的值。
  • void set(int year, int month, int date, int hourOfDay, int minute, intsecond):设置Calendar对象的年、月、日、时、分、秒6个字段的值。
  • 代码

import java.time.Month;
import java.util.Calendar;
import java.util.Date;

public class Time {
    public static void main(String[] args) throws InterruptedException {
       Calendar c = Calendar.getInstance();
       //取出年
        System.out.println(c.get(Calendar.YEAR));
        //取出月   1月从0开始
        System.out.println(c.get(Calendar.MONTH));
        //取出日
        System.out.println(Calendar.DATE);
        //设置为2019年1月1日 1:1:1
        c.set(2019,1,1,1,1,1);
        System.out.println(c.getTime());
        //增加一年
        c.add(Calendar.YEAR,1);
        System.out.println(c.getTime());
    }
}

  • 结果
    java的时间处理类----日历类Calendar类,TimeZone类时区相关类

TimeZone类时区相关类

定义
  • 定义:TimeZone是一个抽象类,不能调用其构造器来创建实例,但可以调用它的静态方法:getDefault()或getTimeZone()得到TimeZone实例
相关方法
  • static String[] getAvailableIDs():获取Java所支持的所有时区ID。
  • static TimeZone getDefault():获取运行机器上默认的时区。
  • String getDisplayName():获取该TimeZone对象的时区名称。
  • String getID():获取该时区的ID。
  • static TimeZone getTimeZone(String ID):获取指定ID对应的TimeZone对象。
import java.util.Arrays;
import java.util.TimeZone;

public class Time {
    public static void main(String[] args) throws InterruptedException {
       //获得java支持的时区
        String[] ids = TimeZone.getAvailableIDs();
        System.out.println("java支持的时区:"+ Arrays.toString(ids));
        //获取机器上默认的时区对象
        TimeZone my = TimeZone.getDefault();
        //根据时区对象,获取时区ID
        System.out.println("系统默认时区ID:"+my.getID());
        //根据时区对象,获取时区名称
        System.out.println("系统默认时区名称:"+my.getDisplayName());
        //获取指定ID对应的TimeZone对象的时区名称
        System.out.println("GNT的时区名称:"+TimeZone.getTimeZone("GNT").getDisplayName());
    }
}

  • 结果
    java的时间处理类----日历类Calendar类,TimeZone类时区相关类
上一篇:docker容器与宿主机相差8小时


下一篇:在使用Date时的注意事项