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;

浙公网安备 33010602011771号