Java 常用类库之 Date、DateFormat和Calendar

1 Date

Data类用于创建一个关于特定时刻(精度为毫秒)的对象。在 JDK 1.1 之前Date类包含了解释日期为年月日时分秒的功能,以及格式化和解析日期字符串的功能。但由于这些功能的 API 不适合国际化,它们在 JDK 1.1 之后被弃用,现在应该使用Calendar类在日期和时间字段之间进行转换,使用DateFormat类进行格式化和解析日期字符串。

  1. 创建一个Date对象有两种方式:

    // 创建当前时间的 Date 对象
    Date t = new Date();
    // 创建指定时间的 Date 对象,指定时间为相对于 1970.01.01 00:00:00 GMT 的毫秒数
    Date t2 = new Date(1630570007479L);
    
  2. 设置和获取Date对象时间

    long time = t.getTime(); // 获取 t 所表示的时间
    t.setTime(1530570007479L); // 设置 t 所表示的时间
    
  3. 判断时间先后

    boolean isBefore = t.before(t2);
    boolean isAfter = t.after(t2);
    

    Date实现了Comparable,因此可以通过调用compareTo()比较两个Date对象。

    t.compareTo(t2); // 返回复数表示 t 先于 t2,0 表示两者同时(毫秒级),正数表示 t 后于 t2
    
  4. toString()

    返回Date对象表示时间的日期时间格式,格式为EEE MMM dd HH:mm:ss zzz yyyy

    Date t2 = new Date(1630570007479L);
    System.out.println(t2);
    

    输出为:

    Thu Sep 02 16:06:47 CST 2021
    
  5. Instance对象之间的转换

    // 将 Date 对象 t 转换得到一个表示相同时间点的 Instant 对象
    Instant ins = t.toInstant();
    // from() 是静态方法,用于从 Instant 对象转换得到一个 Date 对象
    Date t3 = Date.from(ins);
    

2 DateFormat

DataFormat是一个抽象类,用于通过与语言无关的方式对日期或时间进行格式化和解析。它的可实例化子类是SimpleDateFormat

  1. 实例化的几种方式

    DateFormat df = DateFormat.getDateTimeInstance(); // 调用静态方法 getDateTimeInstance 
    DateFormat df1 = DateFormat.getDateInstance(); // 调用静态方法 getDateInstance
    DateFormat df2 = DateFormat.getTimeInstance(); // 调用静态方法 getTimeInstance 
    DateFormat df3 = DateFormat.getInstance(); // 调用静态方法 getInstance
    SimpleDateFormat sdf = new SimpleDateFormat(); // 直接创建 SimpleFormat 对象
    

    其中getDateTimeInstance()得到的DateFormat对象可以同时格式化和解析日期和时间,getDateInstance得到的DateFormat对象可以同时格式化和解析日期,getTimeInstance得到的DateFormat对象可以同时格式化和解析时间,它们都有无参、两参和三参三种重载方法,

    // 无参方法使用默认的日期格式、时间格式和地区格式
    public static final DateFormat getDateTimeInstance() {}
    // 两参方法需要指定日期格式和时间格式,使用默认的地区格式
    public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) {}
    // 三参方法需要指定日期格式、时间格式和地区格式
    public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) {}
    // 无参方法使用默认的日期格式和地区格式,没有支持时间格式
    public static final DateFormat getDateInstance() {}
    // 一参方法需要指定日期格式,使用默认的地区格式,没有支持时间格式
    public static final DateFormat getDateInstance(int style) {}
    // 两参方法需要指定日期格式和地区格式,没有支持时间格式
    public static final DateFormat getDateInstance(int style, Locale aLocale) {}
    // 无参方法使用默认的时间格式和地区格式,没有支持日期格式
    public static final DateFormat getTimeInstance() {}
    // 一参方法需要指定时间格式,使用默认的地区格式,没有支持日期格式
    public static final DateFormat getTimeInstance(int style) {}
    // 一参方法需要指定时间格式和地区格式,没有支持日期格式
    public static final DateFormat getTimeInstance(int style, Locale aLocale) {}
    

    DateFormat类中定义了几种用于指定日期或时间格式的常量:

    public static final int FULL = 0;
    public static final int LONG = 1;
    public static final int MEDIUM = 2;
    public static final int SHORT = 3;
    public static final int DEFAULT = MEDIUM;
    

3 Calendar

上一篇:DateFormat类


下一篇:Go语言趣学指南-lesson6