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);
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;
Java 常用类库之 Date、DateFormat和Calendar
原文:https://www.cnblogs.com/alterwl/p/15227512.html