DateFormat 常用方法源码剖析(基于 Java 11)
DateFormat 是 Java 中用于日期/时间格式化和解析的抽象类,位于 java.text
包中。它提供了将日期格式化为字符串以及将字符串解析为日期的功能。在实际应用中,我们通常使用其子类 SimpleDateFormat,但也可以通过工厂方法获取 DateFormat 实例。
1. DateFormat 概述
DateFormat 是一个抽象类,它定义了格式化和解析日期/时间的方法。由于它是抽象类,不能直接实例化,通常通过以下静态工厂方法获取实例:
getInstance()
- 获取默认格式的日期/时间格式器getDateInstance()
- 获取日期格式器getTimeInstance()
- 获取时间格式器getDateTimeInstance()
- 获取日期时间格式器
2. 工厂方法源码分析
2.1 getInstance()
public final static DateFormat getInstance() {
return getDateTimeInstance(SHORT, SHORT);
}
此方法返回一个使用 SHORT 风格的日期和时间格式器,实际上是调用了 getDateTimeInstance(int, int)
方法。
2.2 getDateTimeInstance(int dateStyle, int timeStyle)
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) {
return getDateTimeInstance(dateStyle, timeStyle, Locale.getDefault(Locale.Category.FORMAT));
}
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) {
// 尝试从提供者获取实例
DateFormat format = getProvider(aLocale).getDateTimeInstance(dateStyle, timeStyle, aLocale);
// 如果没有提供者或提供者返回null,则创建默认实现
if (format == null) {
format = new SimpleDateFormat(getPattern(dateStyle, timeStyle, aLocale), aLocale);
}
return format;
}
此方法根据指定的日期风格、时间风格和区域设置创建日期时间格式器。它首先尝试从提供者获取实例,如果没有提供者或提供者返回 null,则创建一个 SimpleDateFormat 实例。
3. 核心方法源码分析
3.1 format(Date date)
public final String