java.lang.Object java.text.Format java.text.DateFormat
public abstract class DateFormat
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date
对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。
DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。
要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:
myString = DateFormat.getDateInstance().format(myDate);
如果格式化多个日期,那么获取该格式并多次使用它是更为高效的做法,这样系统就不必多次获取有关环境语言和国家/地区约定的信息了。
DateFormat df = DateFormat.getDateInstance(); for (int i = 0; i < myDate.length; ++i) { output.println(df.format(myDate[i]) + "; "); }
要格式化不同语言环境的日期,可在 getDateInstance() 的调用中指定它。
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
还可使用 DateFormat 进行解析。
myDate = df.parse(myString);
使用 getDateInstance 来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用 getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。确切的结果取决于语言环境,但是通常:
如果愿意,还可以在格式上设置时区。如果想对格式化或解析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法所获取的 DateFormat 强制转换为 SimpleDateFormat。这适用于大多数国家/地区;只是要记住将其放入一个 try 代码块中,以防遇到特殊的格式。
还可以使用借助 ParsePosition 和 FieldPosition 的解析和格式化方法形式来
日期格式不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须保持外部同步。
Format
,
NumberFormat
,
SimpleDateFormat
,
Calendar
,
GregorianCalendar
,
TimeZone
,
序列化表格
嵌套类摘要 | |
---|---|
static class |
DateFormat.Field 定义了各种常量,这些常量用作 DateFormat.formatToCharacterIterator 所返回的 AttributedCharacterIterator 中的属性键和 FieldPosition 中的字段标识符。 |
字段摘要 | |
---|---|
static int |
AM_PM_FIELD 用于对齐 AM_PM 字段的有用常量。 |
protected Calendar |
calendar DateFormat 使用 calendar 来生成实现日期和时间格式化所需的时间字段值。 |
static int |
DATE_FIELD 用于对齐 DATE 字段的有用常量。 |
static int |
DAY_OF_WEEK_FIELD 用于对齐 DAY_OF_WEEK 字段的有用常量。 |
static int |
DAY_OF_WEEK_IN_MONTH_FIELD 用于对齐 DAY_OF_WEEK_IN_MONTH 字段的有用常量。 |
static int |
DAY_OF_YEAR_FIELD 用于对齐 DAY_OF_YEAR 字段的有用常量。 |
static int |
DEFAULT 用于默认模式的常量。 |
static int |
ERA_FIELD 用于对齐 ERA 字段的有用常量。 |
static int |
FULL 用于 FULL 模式的常量。 |
static int |
HOUR_OF_DAY0_FIELD 用于对齐从 0 开始的 HOUR_OF_DAY 字段的有用常量。 |
static int |
HOUR_OF_DAY1_FIELD 用于对齐从 1 开始的 HOUR_OF_DAY 字段的有用常量。 |
static int |
HOUR0_FIELD 用于对齐从 0 开始的 HOUR 字段的有用常量。 |
static int |
HOUR1_FIELD 用于对齐从 1 开始的 HOUR 字段的有用常量。 |
static int |
LONG 用于 LONG 模式的常量。 |
static int |
MEDIUM 用于 MEDIUM 模式的常量。 |
static int |
MILLISECOND_FIELD 用于对齐 MILLISECOND 字段的有用常量。 |
static int |
MINUTE_FIELD 用于对齐 MINUTE 字段的有用常量。 |
static int |
MONTH_FIELD 用于对齐 MONTH 字段的有用常量。 |
protected NumberFormat |
numberFormat 数字格式器, DateFormat 用其来格式化日期和时间中的数字。 |
static int |
SECOND_FIELD 用于对齐 SECOND 字段的有用常量。 |
static int |
SHORT 用于 SHORT 模式的常量。 |
static int |
TIMEZONE_FIELD 用于对齐 TIMEZONE 字段的有用常量。 |
static int |
WEEK_OF_MONTH_FIELD 用于对齐 WEEK_OF_MONTH 字段的有用常量。 |
static int |
WEEK_OF_YEAR_FIELD 用于对齐 WEEK_OF_YEAR 字段的有用常量。 |
static int |
YEAR_FIELD 用于对齐 YEAR 字段的有用常量。 |
构造方法摘要 | |
---|---|
protected |
DateFormat() 创建一个新的 DateFormat。 |
方法摘要 | |
---|---|
Object |
clone() 重写 Cloneable |
boolean |
equals(Object obj) 重写 equals |
String |
format(Date date) 将一个 Date 格式化为日期/时间字符串。 |
abstract StringBuffer |
format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) 将一个 Date 格式化为日期/时间字符串。 |
StringBuffer |
format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition) 重写 Format。 |
static Locale[] |
getAvailableLocales() 返回所有语言环境的数组,此类的 get*Instance 方法可以为其返回已本地化的实例。 |
Calendar |
getCalendar() 获取与此日期/时间格式器关联的日历。 |
static DateFormat |
getDateInstance() 获取日期格式器,该格式器具有默认语言环境的默认格式化风格。 |
static DateFormat |
getDateInstance(int style) 获取日期格式器,该格式器具有默认语言环境的给定格式化风格。 |
static DateFormat |
getDateInstance(int style, Locale aLocale) 获取日期格式器,该格式器具有给定语言环境的给定格式化风格。 |
static DateFormat |
getDateTimeInstance() 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。 |
static DateFormat |
getDateTimeInstance(int dateStyle, int timeStyle) 获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格。 |
static DateFormat |
getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) 获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格。 |
static DateFormat |
getInstance() 获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。 |
NumberFormat |
getNumberFormat() 获取此日期/时间格式器用于格式化和解析时间的数字格式器。 |
static DateFormat |
getTimeInstance() 获取时间格式器,该格式器具有默认语言环境的默认格式化风格。 |
static DateFormat |
getTimeInstance(int style) 获取时间格式器,该格式器具有默认语言环境的给定格式化风格。 |
static DateFormat |
getTimeInstance(int style, Locale aLocale) 获取时间格式器,该格式器具有给定语言环境的给定格式化风格。 |
TimeZone |
getTimeZone() 获取时区。 |
int |
hashCode() 重写 hashCode |
boolean |
isLenient() 判断日期/时间解析是否为不严格的。 |
Date |
parse(String source) 从给定字符串的开始解析文本,以生成一个日期。 |
abstract Date |
parse(String source, ParsePosition pos) 根据给定的解析位置开始解析日期/时间字符串。 |
Object |
parseObject(String source, ParsePosition pos) 解析字符串中的文本,以生成一个 Date 。 |
void |
setCalendar(Calendar newCalendar) 设置此日期格式所使用的日历。 |
void |
setLenient(boolean lenient) 指定日期/时间解析是否不严格。 |
void |
setNumberFormat(NumberFormat newNumberFormat) 允许用户设置数字格式器。 |
void |
setTimeZone(TimeZone zone) 为此 DateFormat 对象的日历设置时区。 |
从类 java.text.Format 继承的方法 |
---|
format, formatToCharacterIterator, parseObject |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
protected Calendar calendar
DateFormat
使用 calendar 来生成实现日期和时间格式化所需的时间字段值。子类应将此 calendar 初始化为适合于与此
DateFormat
关联的语言环境的日历。
protected NumberFormat numberFormat
DateFormat
用其来格式化日期和时间中的数字。子类应将此数字格式器初始化为适合于与此
DateFormat
关联的语言环境的数字格式。
public static final int ERA_FIELD
public static final int YEAR_FIELD
public static final int MONTH_FIELD
public static final int DATE_FIELD
public static final int HOUR_OF_DAY1_FIELD
public static final int HOUR_OF_DAY0_FIELD
public static final int MINUTE_FIELD
public static final int SECOND_FIELD
public static final int MILLISECOND_FIELD
public static final int DAY_OF_WEEK_FIELD
public static final int DAY_OF_YEAR_FIELD
public static final int DAY_OF_WEEK_IN_MONTH_FIELD
public static final int WEEK_OF_YEAR_FIELD
public static final int WEEK_OF_MONTH_FIELD
public static final int AM_PM_FIELD
public static final int HOUR1_FIELD
public static final int HOUR0_FIELD
public static final int TIMEZONE_FIELD
public static final int FULL
public static final int LONG
public static final int MEDIUM
public static final int SHORT
public static final int DEFAULT
构造方法详细信息 |
---|
protected DateFormat()
方法详细信息 |
---|
public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
obj
- 必须为 Number 或 Date。
toAppendTo
- 用于返回的时间字符串的字符串缓冲区。
fieldPosition
- 跟踪返回字符串中字段的位置。输入时:如果需要,是一个对齐字段。输出时:对齐字段的偏移量。例如,在给定时间文本 "1996.07.10 AD at 15:08:56 PDT" 的情况下,如果给定的 fieldPosition 是 DateFormat.YEAR_FIELD,则将 fieldPosition 的开始索引和结束索引分别设置为 0 和 4。注意,如果在一个模式中多次出现同一时间字段,则为第一次出现的该时间字段设置 fieldPosition。例如,使用模式 "h a z (zzzz)" 和对齐字段 DateFormat.TIMEZONE_FIELD 将某个 Date 格式化为时间字符串 "1 PM PDT (Pacific Daylight Time)" 时,针对时区模式字符 'z' 的首个匹配项,将 fieldPosition 的开始索引和结束索引分别设置为 5 和 8。
Format
public abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
date
- 要格式化为日期/时间字符串的 Date。
toAppendTo
- 用于返回的日期/时间字符串的字符串缓冲区。
fieldPosition
- 跟踪返回字符串中字段的位置。输入时:如果需要,是一个对齐字段。输出时:对齐字段的偏移量。例如,在给定时间文本 "1996.07.10 AD at 15:08:56 PDT" 的情况下,如果给定的 fieldPosition 是 DateFormat.YEAR_FIELD,则将 fieldPosition 的开始索引和结束索引分别设置为 0 和 4。注意,如果在一个模式中多次出现同一时间字段,则为该时间字段的首个匹配项设置 fieldPosition。例如,使用模式 "h a z (zzzz)" 和对齐字段 DateFormat.TIMEZONE_FIELD 将某个 Date 格式化为时间字符串 "1 PM PDT (Pacific Daylight Time)" 时,针对时区模式字符 'z' 的首个匹配项,将 fieldPosition 的开始索引和结束索引分别设置为 5 和 8。
public final String format(Date date)
date
- 要格式化为时间字符串的时间值。
public Date parse(String source) throws ParseException
有关日期解析的更多信息,请参阅 parse(String, ParsePosition)
方法。
source
- 一个
String
,应从其开始处进行解析。
Date
。
ParseException
- 如果无法解析指定字符串的开始处。
public abstract Date parse(String source, ParsePosition pos)
在默认情况下,进行的解析是不严格的:如果输入的形式不是此对象的格式化方法使用的形式,但仍可作为日期进行解析,则解析将获得成功。客户端可能通过调用 setLenient(false) 来强调严格遵守该格式。
source
- 要解析的日期/时间字符串
pos
- 输入时,是开始进行解析的位置;输出时,是解析终止的位置,如果解析失败,则为开始位置。
setLenient(boolean)
public Object parseObject(String source, ParsePosition pos)
Date
。
该方法试图从 pos
所给定的索引处开始解析文本。如果解析成功,则将 pos
的索引更新为所用最后一个字符后面的索引(解析过程不一定使用到字符串末尾为止的所有字符),并返回解析得到的日期。可以使用更新后的 pos
指示下一次调用此方法的开始点。如果发生错误,则不更改 pos
的索引,并将 pos
的错误索引设置为发生错误处的字符索引,并且返回 null。
有关日期解析的更多信息,请参阅 parse(String, ParsePosition)
方法。
Format
中的
parseObject
source
- 一个
String
,应解析其中的部分内容。
pos
- 具有索引和上述错误索引信息的
ParsePosition
对象。
Date
。在出现错误的情况下返回 null。
NullPointerException
- 如果
pos
为 null。
public static final DateFormat getTimeInstance()
public static final DateFormat getTimeInstance(int style)
style
- 给定的格式化风格。例如,SHORT 用于 US 语言环境中的 "h:mm a"。
public static final DateFormat getTimeInstance(int style, Locale aLocale)
style
- 给定的格式化风格。例如,SHORT 用于 US 语言环境中的 "h:mm a"。
aLocale
- 给定的语言环境。
public static final DateFormat getDateInstance()
public static final DateFormat getDateInstance(int style)
style
- 给定的格式化风格。例如,SHORT 用于 US 语言环境中的 "M/d/yy"。
public static final DateFormat getDateInstance(int style, Locale aLocale)
style
- 给定的格式化风格。例如,SHORT 用于 US 语言环境中的 "M/d/yy"。
aLocale
- 给定的语言环境。
public static final DateFormat getDateTimeInstance()
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
dateStyle
- 给定的日期格式化风格。例如,SHORT 用于 US 语言环境中的 "M/d/yy"。
timeStyle
- 给定的时间格式化风格。例如,SHORT 用于 US 语言环境中的 "h:mm a"。
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
dateStyle
- 给定的日期格式化风格。
timeStyle
- 给定的时间格式化风格。
aLocale
- 给定的语言环境。