- 所有已实现的接口:
Serializable,Cloneable
- 已知子类:
SimpleDateFormat
DateFormat 是日期/时间格式化子类的抽象类,它以独立于语言的方式格式化和解析日期或时间。日期/时间格式化子类,例如 SimpleDateFormat ,允许格式化(即日期→文本)、解析(文本→日期)和规范化。日期表示为 Date 对象或自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
DateFormat 提供了许多类方法,用于根据默认或给定的locale和多种格式化样式获取默认日期/时间格式化程序。格式样式包括 FULL 、 LONG 、 MEDIUM 和 SHORT 。方法描述中提供了使用这些样式的更多详细信息和示例。
DateFormat 帮助您格式化和解析任何locale的日期。您的代码可以完全独立于月份、星期几甚至日历格式的locale约定:阴历与阳历。
要为当前区域设置格式化日期,请使用静态工厂方法之一:
myString = DateFormat.getDateInstance().format(myDate);
如果您正在格式化多个日期,那么获取格式并多次使用它会更有效,这样系统就不必多次获取有关当地语言和国家惯例的信息。
DateFormat df = DateFormat.getDateInstance(); for (int i = 0; i < myDate.length; ++i) { output.println(df.format(myDate[i]) + "; "); }
要为不同的locale格式化日期,请在对 getDateInstance() 的调用中指定它。
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
如果指定的locale包含“ca”(日历)、“rg”(区域覆盖)和/或“tz”(时区)Unicode 扩展,则日历、国家和/或用于格式化的时区将被覆盖。如果同时指定了“ca”和“rg”,则“ca”扩展中的日历会取代“rg”扩展中的隐式日历。
您也可以使用 DateFormat 进行解析。
myDate = df.parse(myString);
使用 getDateInstance 获取该国家/地区的正常日期格式。还有其他可用的静态工厂方法。使用 getTimeInstance 获取该国家/地区的时间格式。使用 getDateTimeInstance 获取日期和时间格式。您可以将不同的选项传递给这些工厂方法来控制结果的长度;从 SHORT 到 MEDIUM 到 LONG 到 FULL 。确切的结果取决于locale,但通常是:
SHORT完全是数字,例如12.13.52或3:30pmMEDIUM更长,比如Jan 12, 1952LONG更长,例如January 12, 1952或3:30:32pmFULL已完全指定,例如Tuesday, April 12, 1952 AD or 3:30:42pm PST。
如果需要,您还可以在格式上设置时区。如果你想要更多地控制格式或解析,(或者想要给你的用户更多的控制权),你可以尝试将从工厂方法获得的 DateFormat 转换为 SimpleDateFormat 。这将适用于大多数国家;请记住将它放在 try 块中,以防遇到不寻常的情况。
您还可以使用 ParsePosition 和 FieldPosition 的解析和格式化方法的形式,以允许您
- 逐步解析字符串的各个部分。
- 对齐任何特定字段,或找出它在屏幕上的位置以供选择。
同步化
日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一个格式,则必须在外部进行同步。
- API 注意:
-
考虑使用
DateTimeFormatter作为不可变且线程安全的替代方案。 - 实现要求:
-
format(Date, StringBuffer, FieldPosition)和parse(String, ParsePosition)方法可能抛出NullPointerException,如果它们的任何参数是null。子类可以提供自己的关于NullPointerException的实现和规范。setCalendar(Calendar)、setNumberFormat(NumberFormat)和setTimeZone(TimeZone)方法在其参数为null时不会抛出NullPointerException,但对同一实例的任何后续操作都可能抛出NullPointerException。getCalendar()、getNumberFormat()和getTimeZone()方法可能会返回null,如果此实例的相应值通过相应的设置方法设置为null。例如:如果此实例的TimeZone值设置为setTimeZone(null),则getTimeZone()可能返回null。
- 自从:
- 1.1
- 参见:
-
内部类总结
内部类修饰符和类型类描述static class定义用作从DateFormat.formatToCharacterIterator返回的AttributedCharacterIterator中的属性键和FieldPosition中的字段标识符的常量。 -
字段摘要
字段修饰符和类型Field描述static final intAM_PM 字段对齐的有用常量。protected CalendarCalendar用于计算日期时间字段和时间的实例。static final intDATE 字段对齐的有用常量。static final int用于 DAY_OF_WEEK 字段对齐的有用常量。static final int用于 DAY_OF_WEEK_IN_MONTH 字段对齐的有用常量。static final int用于 DAY_OF_YEAR 字段对齐的有用常量。static final int默认样式模式的常量。static final intERA 字段对齐的有用常量。static final int完整样式模式的常量。static final int用于从零开始的 HOUR_OF_DAY 字段对齐的有用常量。static final int用于基于 HOUR_OF_DAY 字段对齐的有用常量。static final int用于从零开始的 HOUR 字段对齐的有用常量。static final int用于基于 1 的 HOUR 字段对齐的有用常量。static final int长样式模式的常量。static final int中等样式模式的常量。static final intMILLISECOND 字段对齐的有用常量。static final intMINUTE 字段对齐的有用常量。static final intMONTH 字段对齐的有用常量。protected NumberFormatDateFormat用于格式化日期和时间中的数字的数字格式化程序。static final intSECOND 字段对齐的有用常量。static final int短样式模式的常量。static final int用于 TIMEZONE 字段对齐的有用常量。static final int用于 WEEK_OF_MONTH 字段对齐的有用常量。static final intWEEK_OF_YEAR 字段对齐的有用常量。static final intYEAR 字段对齐的有用常量。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述clone()重写可克隆boolean重写等于final StringBufferformat(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition) 将给定的Object格式化为日期时间字符串。final String将Date格式化为日期时间字符串。abstract StringBufferformat(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) 将Date格式化为日期时间字符串。static Locale[]返回所有locale的数组,此类的get*Instance方法可以为其返回本地化实例。获取与此日期/时间格式化程序关联的日历。static final DateFormat获取具有默认FORMAT区域设置的默认格式化样式的日期格式化程序。static final DateFormatgetDateInstance(int style) 为默认FORMATlocale获取具有给定格式样式的日期格式化程序。static final DateFormatgetDateInstance(int style, Locale aLocale) 获取具有给定locale的给定格式样式的日期格式化程序。static final DateFormat获取具有默认FORMAT区域设置的默认格式化样式的日期/时间格式化程序。static final DateFormatgetDateTimeInstance(int dateStyle, int timeStyle) 获取具有默认FORMATlocale的给定日期和时间格式化样式的日期/时间格式化程序。static final DateFormatgetDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) 获取具有给定locale的给定格式样式的日期/时间格式化程序。static final DateFormat获取对日期和时间都使用 SHORT 样式的默认日期/时间格式化程序。获取此日期/时间格式化程序用于格式化和解析时间的数字格式化程序。static final DateFormat获取具有默认FORMAT区域设置的默认格式化样式的时间格式化程序。static final DateFormatgetTimeInstance(int style) 为默认FORMATlocale获取具有给定格式样式的时间格式化程序。static final DateFormatgetTimeInstance(int style, Locale aLocale) 获取具有给定locale的给定格式样式的时间格式化程序。获取时区。inthashCode()重写哈希码boolean判断日期/时间解析是否宽松。从给定字符串的开头解析文本以生成日期。abstract Dateparse(String source, ParsePosition pos) 根据给定的解析位置解析日期/时间字符串。parseObject(String source, ParsePosition pos) 解析字符串中的文本以生成Date。voidsetCalendar(Calendar newCalendar) 设置此日期格式要使用的日历。voidsetLenient(boolean lenient) 指定日期/时间解析是否宽松。voidsetNumberFormat(NumberFormat newNumberFormat) 允许您设置数字格式化程序。voidsetTimeZone(TimeZone zone) 设置此DateFormat对象的日历时区。在类 java.text.Format 中声明的方法
format, formatToCharacterIterator, parseObject
-
字段详细信息
-
calendar
-
numberFormat
DateFormat用于格式化日期和时间中的数字的数字格式化程序。子类应将其初始化为适合与此DateFormat关联的locale的数字格式。 -
ERA_FIELD
public static final int ERA_FIELDERA 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
YEAR_FIELD
public static final int YEAR_FIELDYEAR 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
MONTH_FIELD
public static final int MONTH_FIELDMONTH 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
DATE_FIELD
public static final int DATE_FIELDDATE 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
HOUR_OF_DAY1_FIELD
public static final int HOUR_OF_DAY1_FIELD用于基于 HOUR_OF_DAY 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。 HOUR_OF_DAY1_FIELD 用于以一为基础的 24 小时制。例如,23:59 + 01:00 结果为 24:59。- 参见:
-
HOUR_OF_DAY0_FIELD
public static final int HOUR_OF_DAY0_FIELD用于从零开始的 HOUR_OF_DAY 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。 HOUR_OF_DAY0_FIELD 用于从零开始的 24 小时时钟。例如,23:59 + 01:00 结果为 00:59。- 参见:
-
MINUTE_FIELD
public static final int MINUTE_FIELDMINUTE 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
SECOND_FIELD
public static final int SECOND_FIELDSECOND 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
MILLISECOND_FIELD
public static final int MILLISECOND_FIELDMILLISECOND 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
DAY_OF_WEEK_FIELD
public static final int DAY_OF_WEEK_FIELD用于 DAY_OF_WEEK 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
DAY_OF_YEAR_FIELD
public static final int DAY_OF_YEAR_FIELD用于 DAY_OF_YEAR 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
DAY_OF_WEEK_IN_MONTH_FIELD
public static final int DAY_OF_WEEK_IN_MONTH_FIELD用于 DAY_OF_WEEK_IN_MONTH 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
WEEK_OF_YEAR_FIELD
public static final int WEEK_OF_YEAR_FIELDWEEK_OF_YEAR 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
WEEK_OF_MONTH_FIELD
public static final int WEEK_OF_MONTH_FIELD用于 WEEK_OF_MONTH 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
AM_PM_FIELD
public static final int AM_PM_FIELDAM_PM 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
HOUR1_FIELD
public static final int HOUR1_FIELD用于基于 1 的 HOUR 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。 HOUR1_FIELD 用于基于 1 的 12 小时时钟。例如,晚上 11:30 + 1 小时的结果是凌晨 12:30。- 参见:
-
HOUR0_FIELD
public static final int HOUR0_FIELD用于从零开始的 HOUR 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。 HOUR0_FIELD 用于从零开始的 12 小时时钟。例如,11:30 PM + 1 小时的结果是 00:30 AM。- 参见:
-
TIMEZONE_FIELD
public static final int TIMEZONE_FIELD用于 TIMEZONE 字段对齐的有用常量。在日期/时间格式的 FieldPosition 中使用。- 参见:
-
FULL
public static final int FULL完整样式模式的常量。- 参见:
-
LONG
public static final int LONG长样式模式的常量。- 参见:
-
MEDIUM
public static final int MEDIUM中等样式模式的常量。- 参见:
-
SHORT
public static final int SHORT短样式模式的常量。- 参见:
-
DEFAULT
public static final int DEFAULT默认样式模式的常量。它的值是中等。- 参见:
-
-
构造方法详细信息
-
DateFormat
protected DateFormat()创建新的日期格式。
-
-
方法详情
-
format
将给定的Object格式化为日期时间字符串。格式化的字符串附加到给定的StringBuffer。- 指定者:
format在类Format中- 参数:
obj- 必须是Date或Number表示与 时代 的毫秒偏移量。toAppendTo- 返回日期时间字符串的字符串缓冲区。fieldPosition- 跟踪字段在返回字符串中的位置。例如,给定一个日期时间文本"1996.07.10 AD at 15:08:56 PDT",如果给定的fieldPosition是YEAR_FIELD,则fieldPosition的开始索引和结束索引将分别设置为 0 和 4。请注意,如果同一日期时间字段在一个模式中出现多次,fieldPosition将设置为该日期时间字段的第一次出现。例如,使用模式"h a z (zzzz)"和对齐字段TIMEZONE_FIELD将Date格式化为日期时间字符串"1 PM PDT (Pacific Daylight Time)",对于第一次出现的时区模式字符,fieldPosition的开始索引和结束索引将分别设置为 5 和 8'z'。- 返回:
-
作为
toAppendTo传入的字符串缓冲区,附加了格式化文本。 - 抛出:
IllegalArgumentException- 如果Format无法格式化给定的obj。- 参见:
-
format
public abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) 将Date格式化为日期时间字符串。格式化的字符串附加到给定的StringBuffer。- 参数:
date- 要格式化为日期时间字符串的日期。toAppendTo- 返回日期时间字符串的字符串缓冲区。fieldPosition- 跟踪字段在返回字符串中的位置。例如,给定一个日期时间文本"1996.07.10 AD at 15:08:56 PDT",如果给定的fieldPosition是YEAR_FIELD,则fieldPosition的开始索引和结束索引将分别设置为 0 和 4。请注意,如果同一日期时间字段在一个模式中出现多次,fieldPosition将设置为该日期时间字段的第一次出现。例如,使用模式"h a z (zzzz)"和对齐字段TIMEZONE_FIELD将Date格式化为日期时间字符串"1 PM PDT (Pacific Daylight Time)",对于第一次出现的时区模式字符,fieldPosition的开始索引和结束索引将分别设置为 5 和 8'z'。- 返回:
-
作为
toAppendTo传入的字符串缓冲区,附加了格式化文本。
-
format
将Date格式化为日期时间字符串。- 参数:
date- 要格式化为日期时间字符串的时间值。- 返回:
- 格式化的日期时间字符串。
-
parse
从给定字符串的开头解析文本以生成日期。该方法可能不会使用给定字符串的整个文本。有关日期解析的更多信息,请参阅
parse(String, ParsePosition)方法。- 参数:
source- 一个String的开头应该被解析。- 返回:
-
从字符串中解析出的
Date。 - 抛出:
ParseException- 如果无法解析指定字符串的开头。
-
parse
根据给定的解析位置解析日期/时间字符串。例如,时间文本"07/10/96 4:5 PM, PDT"将被解析为等同于Date(837039900000L)的Date。默认情况下,解析是宽松的:如果输入不是此对象的格式方法所使用的形式,但仍可以解析为日期,则解析成功。客户可以通过调用
setLenient(false)坚持严格遵守格式。此解析操作使用
calendar生成Date。因此,calendar的日期时间字段和TimeZone值可能已被覆盖,具体取决于子类实现。之前通过调用setTimeZone设置的任何TimeZone值可能需要恢复以进行进一步操作。- 参数:
source- 要解析的日期/时间字符串pos- 输入时,开始解析的位置;在输出上,解析终止的位置,或者解析失败时的开始位置。- 返回:
-
A
Date或null如果无法解析输入
-
parseObject
解析字符串中的文本以生成Date。该方法尝试从
pos给出的索引开始解析文本。如果解析成功,则将pos的索引更新为最后使用的字符之后的索引(解析不一定使用到字符串末尾的所有字符),并返回解析日期。更新后的pos可用于指示下一次调用此方法的起点。如果发生错误,则不更改pos的索引,将pos的错误索引设置为发生错误的字符的索引,并返回null。有关日期解析的更多信息,请参阅
parse(String, ParsePosition)方法。- 指定者:
parseObject在类Format中- 参数:
source- AString,其中的一部分应该被解析。pos- 具有如上所述的索引和错误索引信息的ParsePosition对象。- 返回:
-
从字符串中解析出的
Date。如果出现错误,则返回 null。 - 抛出:
NullPointerException- 如果source或pos为空。
-
getTimeInstance
获取具有默认FORMAT区域设置的默认格式化样式的时间格式化程序。这相当于调用
getTimeInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))。- 返回:
- 时间格式化程序。
- 参见:
-
getTimeInstance
为默认FORMATlocale获取具有给定格式样式的时间格式化程序。这相当于调用
getTimeInstance(style, Locale.getDefault(Locale.Category.FORMAT))。- 参数:
style- 给定的格式样式。例如,在美国locale中,SHORT 表示“h:mm a”。- 返回:
- 时间格式化程序。
- 参见:
-
getTimeInstance
获取具有给定locale的给定格式样式的时间格式化程序。- 参数:
style- 给定的格式样式。例如,在美国locale中,SHORT 表示“h:mm a”。aLocale- 给定的locale。- 返回:
- 时间格式化程序。
-
getDateInstance
获取具有默认FORMAT区域设置的默认格式化样式的日期格式化程序。这相当于调用
getDateInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))。- 返回:
- 日期格式化程序。
- 参见:
-
getDateInstance
为默认FORMATlocale获取具有给定格式样式的日期格式化程序。这相当于调用
getDateInstance(style, Locale.getDefault(Locale.Category.FORMAT))。- 参数:
style- 给定的格式样式。例如,在美国locale中,SHORT 表示“M/d/yy”。- 返回:
- 日期格式化程序。
- 参见:
-
getDateInstance
获取具有给定locale的给定格式样式的日期格式化程序。- 参数:
style- 给定的格式样式。例如,在美国locale中,SHORT 表示“M/d/yy”。aLocale- 给定的locale。- 返回:
- 日期格式化程序。
-
getDateTimeInstance
获取具有默认FORMAT区域设置的默认格式化样式的日期/时间格式化程序。这相当于调用
getDateTimeInstance(DEFAULT, DEFAULT, Locale.getDefault(Locale.Category.FORMAT))。- 返回:
- 日期/时间格式化程序。
- 参见:
-
getDateTimeInstance
获取具有默认FORMATlocale的给定日期和时间格式化样式的日期/时间格式化程序。这相当于调用
getDateTimeInstance(dateStyle, timeStyle, Locale.getDefault(Locale.Category.FORMAT))。- 参数:
dateStyle- 给定的日期格式样式。例如,在美国locale中,SHORT 表示“M/d/yy”。timeStyle- 给定的时间格式样式。例如,在美国locale中,SHORT 表示“h:mm a”。- 返回:
- 日期/时间格式化程序。
- 参见:
-
getDateTimeInstance
获取具有给定locale的给定格式样式的日期/时间格式化程序。- 参数:
dateStyle- 给定的日期格式样式。timeStyle- 给定的时间格式样式。aLocale- 给定的locale。- 返回:
- 日期/时间格式化程序。
-
getInstance
获取对日期和时间都使用 SHORT 样式的默认日期/时间格式化程序。- 返回:
- 日期/时间格式化程序
-
getAvailableLocales
返回所有locale的数组,此类的get*Instance方法可以为其返回本地化实例。返回的数组表示 Java 运行时和已安装的DateFormatProvider实现支持的locale的联合。至少,返回的数组必须包含一个等于Locale.ROOT的Locale实例和一个等于Locale.US的Locale实例。- 返回:
-
本地化
DateFormat实例可用的locale数组。
-
setCalendar
- 参数:
newCalendar- 日期格式要使用的新Calendar
-
getCalendar
获取与此日期/时间格式化程序关联的日历。- 返回:
- 与此日期/时间格式化程序关联的日历。
-
setNumberFormat
允许您设置数字格式化程序。- 参数:
newNumberFormat- 给定的新 NumberFormat。
-
getNumberFormat
获取此日期/时间格式化程序用于格式化和解析时间的数字格式化程序。- 返回:
- 此日期/时间格式化程序使用的数字格式化程序。
-
setTimeZone
设置此DateFormat对象的日历时区。此方法等效于以下调用。getCalendar().setTimeZone(zone)通过此方法设置的
TimeZone被setCalendar调用覆盖。调用 parse 方法后,此方法设置的
TimeZone可能会被覆盖。- 参数:
zone- 给定的新时区。
-
getTimeZone
获取时区。此方法等效于以下调用。getCalendar().getTimeZone()- 返回:
- 与 DateFormat 日历关联的时区。
-
setLenient
public void setLenient(boolean lenient) 指定日期/时间解析是否宽松。通过宽松的解析,解析器可以使用试探法来解释与该对象的格式不完全匹配的输入。通过严格解析,输入必须匹配此对象的格式。此方法等效于以下调用。
getCalendar().setLenient(lenient)调用
setCalendar()会覆盖此宽大值。- 参数:
lenient- 当true时,解析宽松- 参见:
-
isLenient
public boolean isLenient()判断日期/时间解析是否宽松。此方法等效于以下调用。getCalendar().isLenient()- 返回:
true如果calendar宽松;false否则。- 参见:
-
hashCode
public int hashCode()重写哈希码 -
equals
重写等于 -
clone
重写可克隆
-