public abstract class DateFormat extends Format
DateFormat
是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。
日期/时间格式化子类(如SimpleDateFormat
)允许格式化(即日期文本),解析(文本日期)和归一化。
该日期表示为一个Date
对象,或自1970年1月1日00:00:00 GMT以来的毫秒。
DateFormat
提供了许多类方法,用于根据默认或给定的区域设置和多个格式化样式获取默认的日期/时间格式化程序。 格式化风格包括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
。 确切的结果取决于语言环境,但通常是:
SHORT
是完全数字的,如12.13.52
或3:30pm
MEDIUM
较长,如Jan 12, 1952
LONG
较长,如January 12, 1952
或3:30:32pm
FULL
是完全指定的,如Tuesday, April 12, 1952 AD or 3:30:42pm PST
。 您也可以根据需要设置格式的时区。 如果你想在格式或分析更精确的控制,(或者希望给用户更多的控制),可以尝试铸造DateFormat
你从工厂方法到获得SimpleDateFormat
。 这将适用于大多数国家; 只要记住把它放在一个try
块中,以防万一你遇到不寻常的一个。
您还可以使用ParsePosition
和FieldPosition
的解析和格式方法表单 ,让您
日期格式不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问格式,则必须在外部进行同步。
Format
, NumberFormat
, SimpleDateFormat
, Calendar
, GregorianCalendar
, TimeZone
, Serialized Form
Modifier and Type | Class and Description |
---|---|
static class |
DateFormat.Field
定义在
AttributedCharacterIterator 返回的
DateFormat.formatToCharacterIterator 中用作属性键的
AttributedCharacterIterator ,以及FieldPosition中的字段
FieldPosition 。
|
Modifier and Type | Field and Description |
---|---|
static int |
AM_PM_FIELD
AM_PM字段对齐的常用常数。
|
protected Calendar |
calendar
用于计算日期时间字段和即时时间的 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
恒定的全风格图案。
|
static int |
HOUR_OF_DAY0_FIELD
基于零的HOUR_OF_DAY字段对齐的常用常数。
|
static int |
HOUR_OF_DAY1_FIELD
基于一个HOUR_OF_DAY字段对齐的常用常数。
|
static int |
HOUR0_FIELD
基于零的HOUR场对齐的有用常数。
|
static int |
HOUR1_FIELD
基于一个HOUR字段对齐的常用常数。
|
static int |
LONG
恒久的长款式。
|
static int |
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
恒定的短款式。
|
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场对齐的常用常数。
|
Modifier | Constructor and Description |
---|---|
protected |
DateFormat()
创建一个新的日期格式。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
覆盖可克隆
|
boolean |
equals(Object obj)
覆盖等于
|
String |
format(Date date)
将日期格式化成日期/时间字符串。
|
abstract StringBuffer |
format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
将日期格式化成日期/时间字符串。
|
StringBuffer |
format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
覆盖格式。
|
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()
获取默认格式化样式的日期/时间格式化程序默认的
FORMAT 区域设置。
|
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 对象的日历的时区。
|
format, formatToCharacterIterator, parseObject
protected Calendar calendar
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
public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
format
在类别
Format
obj
- 必须是数字或日期。
toAppendTo
- 返回时间字符串的字符串缓冲区。
fieldPosition
- 跟踪返回字符串中字段的位置。
在输入:对齐字段,如果需要。
输出:对齐字段的偏移量。
例如,给定时间文本“1996.07.10 AD在15:08:56 PDT”,如果给定的fieldPosition为DateFormat.YEAR_FIELD,则fieldPosition的起始索引和结束索引将分别设置为0和4。
请注意,如果相同的时间字段在模式中出现多次,则fieldPosition将被设置为该时间字段的第一个出现。
例如,使用模式“haz(zzzz)”和对齐字段DateFormat.TIMEZONE_FIELD将日期格式化为时间字符串“1 PM PDT(太平洋夏令时间)”,fieldPosition的起始索引和结束索引将设置为5和8,分别是时区模式字符“z”的第一次出现。
Format
public abstract StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
date
- 要格式化为日期/时间字符串的日期。
toAppendTo
- 返回日期/时间字符串的字符串缓冲区。
fieldPosition
- 跟踪返回字符串中字段的位置。
在输入:对齐字段,如果需要。
输出:对齐字段的偏移量。
例如,给定时间文本“1996.07.10 AD在15:08:56 PDT”,如果给定的fieldPosition为DateFormat.YEAR_FIELD,则fieldPosition的起始索引和结束索引将分别设置为0和4。
请注意,如果相同的时间字段在模式中出现多次,则fieldPosition将被设置为该时间字段的第一个出现。
例如,使用模式“haz(zzzz)”和对齐字段DateFormat.TIMEZONE_FIELD将日期格式化为时间字符串“1 PM PDT(太平洋夏令时间)”,fieldPosition的起始索引和结束索引将设置为5和8,分别是时区模式字符“z”的第一次出现。
public final String format(Date date)
date
- 要格式化为时间字符串的时间值。
public Date parse(String source) throws ParseException
source
- A
String
,其开头应解析。
Date
从字符串中解析。
ParseException
- 如果指定字符串的开头不能被解析。
public abstract Date parse(String source, ParsePosition pos)
"07/10/96 4:5 PM, PDT"
的时间文本将被解析为Date
,相当于Date(837039900000L)
。
默认情况下,解析是宽松的:如果输入不是此对象的格式方法使用的形式,但仍可以解析为日期,则解析成功。 客户可能会通过致电setLenient(false)
坚持严格遵守格式。
这个解析操作使用calendar
生成一个Date
。 因此, calendar
的日期字段和TimeZone
值可能已被覆盖,这取决于子类实现。 任何TimeZone
先前已通过调用设定值setTimeZone
可能需要恢复的进一步行动。
source
- 要解析的日期/时间字符串
pos
- 输入时,开始解析的位置;
输出,解析终止的位置,或解析失败时的起始位置。
Date
或
null
如果输入无法解析)
public Object parseObject(String source, ParsePosition pos)
Date
。
该方法尝试从pos
给出的索引开始解析文本。 如果解析成功,那么pos
的索引将在使用最后一个字符之后更新为索引(解析不一定使用字符串末尾的所有字符),并返回解析的日期。 更新的pos
可用于指示下一次调用此方法的起始点。 如果发生错误,那么pos
的索引没有改变, pos
的错误索引被设置为发生错误的pos
的索引,返回null。
有关日期解析的更多信息,请参阅parse(String, ParsePosition)
方法。
parseObject
在类别
Format
source
- A
String
,其中一部分应该被解析。
pos
-A
ParsePosition
具有如上所述的索引和错误索引信息的对象。
Date
。
万一出错,返回null。
NullPointerException
- 如果
pos
为空。
public static final DateFormat getTimeInstance()
FORMAT
语言环境的时间格式化程序 。
这相当于呼叫getTimeInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))
。
Locale.getDefault(java.util.Locale.Category)
,
Locale.Category.FORMAT
public static final DateFormat getTimeInstance(int style)
FORMAT
区域设置的给定格式化样式的时间格式化程序 。
这相当于呼叫getTimeInstance(style, Locale.getDefault(Locale.Category.FORMAT))
。
style
- 给定的格式化样式。
例如,美国地区的“h:mm a”的短路。
Locale.getDefault(java.util.Locale.Category)
,
Locale.Category.FORMAT
public static final DateFormat getTimeInstance(int style, Locale aLocale)
style
- 给定的格式化样式。
例如,美国地区的“h:mm a”的短路。
aLocale
- 给定的地区。
public static final DateFormat getDateInstance()
FORMAT
区域设置的日期格式化程序 。
这相当于调用getDateInstance(DEFAULT, Locale.getDefault(Locale.Category.FORMAT))
。
Locale.getDefault(java.util.Locale.Category)
,
Locale.Category.FORMAT
public static final DateFormat getDateInstance(int style)
FORMAT
区域设置的给定格式化样式的日期格式化程序 。
这相当于呼叫getDateInstance(style, Locale.getDefault(Locale.Category.FORMAT))
。
style
- 给定的格式化样式。
例如,美国地区的“M / d / yy”短路。
Locale.getDefault(java.util.Locale.Category)
,
Locale.Category.FORMAT
public static final DateFormat getDateInstance(int style, Locale aLocale)
style
- 给定的格式化样式。
例如,美国地区的“M / d / yy”短路。
aLocale
- 给定的区域设置。
public static final DateFormat getDateTimeInstance()
FORMAT
区域设置。
这相当于呼叫getDateTimeInstance(DEFAULT, DEFAULT, Locale.getDefault(Locale.Category.FORMAT))
。
Locale.getDefault(java.util.Locale.Category)
,
Locale.Category.FORMAT
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
FORMAT
区域设置的给定日期和时间格式化样式的日期/时间格式化程序 。
这相当于呼叫getDateTimeInstance(dateStyle, timeStyle, Locale.getDefault(Locale.Category.FORMAT))
。
dateStyle
- 给定的日期格式化样式。
例如,美国地区的“M / d / yy”短路。
timeStyle
- 给定的时间格式化样式。
例如,美国地区的“h:mm a”的短路。
Locale.getDefault(java.util.Locale.Category)
,
Locale.Category.FORMAT
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
dateStyle
- 给定的日期格式化样式。
timeStyle
- 给定的时间格式化样式。
aLocale
- 给定的区域设置。
public static final DateFormat getInstance()
public static Locale[] getAvailableLocales()
get*Instance
方法可以返回本地化实例。
返回的数组表示由Java运行时支持的语言环境和已安装的DateFormatProvider
实现的联合。
它必须包含至少一个等于Locale.US
365的Locale
实例。
DateFormat
实例可用。
public void setCalendar(Calendar newCalendar)
newCalendar
- 由日期格式使用的新的
Calendar
public Calendar getCalendar()
public void setNumberFormat(NumberFormat newNumberFormat)
newNumberFormat
- 给定的新的NumberFormat。
public NumberFormat getNumberFormat()
public void setTimeZone(TimeZone zone)
DateFormat
对象的日历的时区。
此方法等同于以下调用。
getCalendar().setTimeZone(zone)
该TimeZone
集通过这种方法是通过覆盖setCalendar
电话。
由此方法设置的TimeZone
可能会由于调用解析方法而被覆盖。
zone
- 给定的新时区。
public TimeZone getTimeZone()
getCalendar().getTimeZone()
public void setLenient(boolean lenient)
此方法等同于以下调用。
getCalendar().setLenient(lenient)
这个宽大的价值被一个电话setCalendar()
所覆盖 。
lenient
- 当
true
,解析是宽松的
Calendar.setLenient(boolean)
public boolean isLenient()
getCalendar().isLenient()
true
如果calendar
是宽松的;
false
否则。
Calendar.isLenient()
public int hashCode()
hashCode
在类别
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
在类别
Object
obj
- 与之比较的参考对象。
true
如果该对象与obj参数相同;
false
否则。
Object.hashCode()
, HashMap