Java 常用类库之 Date、DateFormat和Calendar
1 Date
Data
类用于创建一个关于特定时刻(精度为毫秒)的对象。在 JDK 1.1 之前Date
类包含了解释日期为年月日时分秒的功能,以及格式化和解析日期字符串的功能。但由于这些功能的 API 不适合国际化,它们在 JDK 1.1 之后被弃用,现在应该使用Calendar
类在日期和时间字段之间进行转换,使用DateFormat
类进行格式化和解析日期字符串。
-
创建一个
Date
对象有两种方式:// 创建当前时间的 Date 对象 Date t = new Date(); // 创建指定时间的 Date 对象,指定时间为相对于 1970.01.01 00:00:00 GMT 的毫秒数 Date t2 = new Date(1630570007479L);
-
设置和获取
Date
对象时间long time = t.getTime(); // 获取 t 所表示的时间 t.setTime(1530570007479L); // 设置 t 所表示的时间
-
判断时间先后
boolean isBefore = t.before(t2); boolean isAfter = t.after(t2);
Date
实现了Comparable
,因此可以通过调用compareTo()
比较两个Date
对象。t.compareTo(t2); // 返回复数表示 t 先于 t2,0 表示两者同时(毫秒级),正数表示 t 后于 t2
-
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
-
与
Instance
对象之间的转换// 将 Date 对象 t 转换得到一个表示相同时间点的 Instant 对象 Instant ins = t.toInstant(); // from() 是静态方法,用于从 Instant 对象转换得到一个 Date 对象 Date t3 = Date.from(ins);
2 DateFormat
DataFormat
是一个抽象类,用于通过与语言无关的方式对日期或时间进行格式化和解析。它的可实例化子类是SimpleDateFormat
。
-
实例化的几种方式
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;