public final class DateTimeFormatter extends Object
这个类提供了主要的应用为切入点,打印和解析并提供DateTimeFormatter
常见的实现:
ISO_LOCAL_DATE
uuuu-MMM-dd
long
或medium
更复杂的程序是由DateTimeFormatterBuilder
。
主要的日期时间类提供了两种方法-一个格式,format(DateTimeFormatter formatter)
,和一个用于解析、parse(CharSequence text, DateTimeFormatter formatter)
。
例如:
String text = date.toString(formatter); LocalDate date = LocalDate.parse(text, formatter);
除了格式,格式化程序可以创建所需的现场,年表,ZoneId,和decimalstyle。
的withLocale
方法返回一个新的格式化,覆盖的区域。该区域设置影响格式化和解析的某些方面。例如,在ofLocalizedDate
提供一个格式化,使用区域设置特定的日期格式。
的withChronology
方法返回一个新的格式化,重写年表。如果重写,日期时间值转换为格式化前的年表。在解析期间,日期时间值转换为返回之前的时间顺序。
的withZone
方法返回一个新的格式化,覆盖区。如果重写,日期时间值转换为与请求的zoneid zoneddatetime格式化之前。在分析过程中的应用价值zoneid之前返回。
的withDecimalStyle
方法返回一个新的格式化,重写DecimalStyle
。的decimalstyle符号用于格式化和解析。
有些应用程序可能需要使用java.text.Format
类旧格式。该方法返回一个实现toFormat()
java.text.Format
。
Formatter | 描述 | Example |
---|---|---|
ofLocalizedDate(dateStyle) |
Formatter with date style from the locale | '2011-12-03' |
ofLocalizedTime(timeStyle) |
Formatter with time style from the locale | '10:15:30' |
ofLocalizedDateTime(dateTimeStyle) |
Formatter with a style for date and time from the locale | '3 Jun 2008 11:05:30' |
ofLocalizedDateTime(dateStyle,timeStyle) |
Formatter with date and time styles from the locale | '3 Jun 2008 11:05' |
BASIC_ISO_DATE |
Basic ISO date | '20111203' |
ISO_LOCAL_DATE |
ISO Local Date | '2011-12-03' |
ISO_OFFSET_DATE |
ISO Date with offset | '2011-12-03+01:00' |
ISO_DATE |
ISO Date with or without offset | '2011-12-03+01:00'; '2011-12-03' |
ISO_LOCAL_TIME |
Time without offset | '10:15:30' |
ISO_OFFSET_TIME |
Time with offset | '10:15:30+01:00' |
ISO_TIME |
Time with or without offset | '10:15:30+01:00'; '10:15:30' |
ISO_LOCAL_DATE_TIME |
ISO Local Date and Time | '2011-12-03T10:15:30' |
ISO_OFFSET_DATE_TIME |
Date Time with Offset | 2011-12-03T10:15:30+01:00' |
ISO_ZONED_DATE_TIME |
Zoned Date Time | '2011-12-03T10:15:30+01:00[Europe/Paris]' |
ISO_DATE_TIME |
Date and time with ZoneId | '2011-12-03T10:15:30+01:00[Europe/Paris]' |
ISO_ORDINAL_DATE |
Year and day of year | '2012-337' |
ISO_WEEK_DATE |
Year and Week | 2012-W48-6' |
ISO_INSTANT |
Date and Time of an Instant | '2011-12-03T10:15:30Z' |
RFC_1123_DATE_TIME |
RFC 1123 / RFC 822 | 'Tue, 3 Jun 2008 11:05:30 GMT' |
ofPattern(String)
和
ofPattern(String, Locale)
方法创建一个格式化程序。例如,
"d MMM uuuu"
将格式2011-12-03为3 DEC 2011。格式化程序创建的一个模式可以被多次使用,如有必要,它是永恒的,是线程安全的。
例如:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd"); String text = date.toString(formatter); LocalDate date = LocalDate.parse(text, formatter);
所有的字母“A”到“Z”和“A”到“Z”是保留作为模式字母。下面的模式字母被定义:
符号意义表示实例------ ------- ------------ -------G时代文字广告;Anno Domini;一U年2004;04Y一年2004;04D日数189天年数/文本7 M / L月;07;月;七月;J月数D日数10Q / Q的年数/文本3季度第三季度03季度;;;Y周为基础的一年1996;96每周一周为基础的27号月数4周周文二天;星期二;TE / C局部的星期数/文2;02;二;星期二;T月数3周上午下午1时许下午文本AM PM H时钟小时(1-12)12号AM PM K小时(0-11)0号AM PM K时钟小时(1-24)0号一天0小时(24)M分钟数30秒的第二个55号S分数的第二分数978一毫一天1234号N纳米第二987654321纳米日数1234000000v时区ID区ID美国/ los_angeles;Z;- 08:30Z时区名称区域名称太平洋标准时间;PST局域区偏移offset-o GMT + 8;GMT + 08:00;utc-08:00;X区偏移Z为零offset-x Z;08;0830;- 08:30;- 083015 - 08:30:15;X区偏移offset-x + 0000;08;0830;- 08:30;- 083015 - 08:30:15;Z区偏移offset-z + 0000;0800;- 08:00;P垫下垫改性剂1“文本分隔符逃跑“单引号”[可选部分启动可选部分结束#保留供将来使用保留未来使用保留未来使用
模式字母的计数确定格式。
文本:文本风格的基础上确定的图案字母的数目。小于4的信件将使用short form
模式。正好4个字母会用full form
模式。正好5个字母会用narrow form
模式。模式字母“L”,“C”和“Q”指定的文本样式的独立形式。
数:如果字母数,然后利用价值输出的最小位数和无填充。否则,数字的计数被用作输出字段的宽度,有必要的值为零。下面的模式字母对字母的计数有限制。只有一个字母的“C”和“F”可以指定。最多两个字母的“D”,“H”,“H”,“K”,“K”,“M”,和“S”可以指定。最多三个字母的“D”可以指定。
数字/文本:如果图案字母计数为3或更高,使用文本规则。否则使用上面的数字规则。
分数:输出第二场纳米作为一小部分的第二。第二个值的纳米有九个数字,因此图案字母的计数是从1到9。如果它小于9,则第二个值被截断,只有最重要的数字被输出。在严格模式下的解析时,已解析的数字的数量必须与模式字母的计数相匹配。当在宽松模式下解析时,解析的数字的数量必须至少是模式字母的计数,最多为9个数字。
年:字母计数确定最小字段宽度以下的填料。如果字母数是2,然后reduced
两位数的形式使用。打印输出,这最右边的两个数字。对于解析,这将解析使用2000的基数,导致一年内的范围在2000至2099之间。如果字母计数小于四(但不是两个),然后是只输出负年每SignStyle.NORMAL
。否则,信号输出如果垫宽度超过,每SignStyle.EXCEEDS_PAD
。
zoneid:这个输出时区的ID,如“欧洲/巴黎。如果字母的计数是两个,那么时区标识输出。任何其他数信投IllegalArgumentException
。
区域名称:这个输出时区ID显示名称如果字母计数是一个,两个或三个,那么短的名字是输出。如果字母的计数是四,则输出的全称是。五个或更多的信件投IllegalArgumentException
。
偏移X和X:该格式基于模式字母数的偏移。一个字母输出的一个小时,如“01”,除非分钟是非零的情况下,也输出,如“+ 0130”。两个字母输出的小时和分钟,没有一个结肠癌,如“0130”。三个字母输出的小时和分钟,一个冒号,如“+”01:30。四个字母输出的小时和分钟和可选的第二,没有一个结肠癌,如“013015”。五个字母输出的小时和分钟和可选的第二,一个冒号,如“+”01:30:15。六个或更多的信件投IllegalArgumentException
。图案字母x(大写)将输出“Z”当偏移是输出为零,而图案字母x(小写)将输出“00”,“0000”,或“+00:00”。
偏移O:这种格式的局部偏移基于模式的字母数。一个字母输出局部抵消short形式,这是定位偏移文字,如“GMT”,小时没有前导零,可选两位数分钟和第二的如果非零,和冒号,例如“GMT + 8。四个字母的full输出形式,这是定位偏移文字,如“GMT,以2位数的小时和分钟,可选的第二场如果非零,和冒号,例如“GMT + 08:00”。任何其他数信投IllegalArgumentException
。
偏移Z:该格式基于模式字母数的偏移。一,两个或三个字母输出的小时和分钟,没有一个结肠癌,如“0130”。当偏移量为零时,输出将是“+ 0000”。四个字母输出局部抵消full形式,相当于四个offset-o.输出将相应的局部偏移文本如果偏移为零。五个字母输出的小时,分钟,可选的第二,如果非零,与结肠。如果偏移量为零,则输出“Z”。六个或更多的信件投IllegalArgumentException
。
可选部分:可选部分标记的工作要求和DateTimeFormatterBuilder.optionalEnd()
DateTimeFormatterBuilder.optionalStart()
一模一样。
垫剂:修改模式,紧跟的是用空格填充。焊盘宽度取决于图案字母的数目。这是叫DateTimeFormatterBuilder.padNext(int)
相同。
例如,“PPH输出一小时垫上空间留给宽2。
任何无法识别的字母都是一个错误。任何非字母字符,除了“[”、“]”、“{”、“}”,“#”和单引号将直接输出。尽管如此,建议使用单引号来直接输出您要输出的所有字符,以确保未来的更改不会破坏您的应用程序。
Map
场值,一个
ZoneId
和
Chronology
。第二,解析的数据被解析,通过验证,组合和简化各个领域到更有用的。
五种分析方法是由这个类提供的。四的这些执行的解析和解决阶段。第五种方法,parseUnresolved(CharSequence, ParsePosition)
,只执行第一阶段,把结果悬而未决。因此,它本质上是一个低级别的操作。
解决阶段由两个参数控制,设置在这个类上。
是的ResolverStyle
枚举提供了三种不同的方法,严格的,聪明的和宽容的。智能选项是默认值。它可以设置使用withResolverStyle(ResolverStyle)
。
的withResolverFields(TemporalField...)
参数允许字段的设置将决定先解决开始过滤。例如,如果格式化程序将一年、月、日、月和日的一年,有两种方法:解决日期(年+月+日月)和(每年的年+日)。解析字段允许一个方法可供选择。如果没有解析字段设置然后两者必须产生相同的日期。
解决单独的字段以形成一个完整的日期和时间是一个复杂的过程,在多个类上分布的行为。它遵循这些步骤:
IsoChronology
。ChronoField
日期字段的解决。这是通过使用Chronology.resolveDate(Map, ResolverStyle)
。现场决议文件位于Chronology
实施。ChronoField
时间字段的解决。这是记录在ChronoField
是相同的所有年表。ChronoField
处理。这是通过使用TemporalField.resolve(Map, TemporalAccessor, ResolverStyle)
。现场决议文件位于TemporalField
实施。ChronoField
日期和时间。这允许在步骤四中产生ChronoField
值的字段,它们被加工成的日期和时间。LocalTime
是如果有一天可以在至少一个小时的形成。这涉及到提供第二分钟,第二和第二部分的默认值。Modifier and Type | Field and Description |
---|---|
static DateTimeFormatter |
BASIC_ISO_DATE
ISO日期格式化,格式或解析无偏移的日期,如“20111203”。
|
static DateTimeFormatter |
ISO_DATE
ISO日期格式化,格式或解析与偏移如果可用的日期,如“2011-12-03 '或' 2011-12-03 + 01:00”。
|
static DateTimeFormatter |
ISO_DATE_TIME
ISO日期时间格式化,格式或解析一个如果可用胶印和带日期时间,如“2011-12-03t10:15:30 ',' 2011-12-03t10:15:30 + 01:00”或“2011-12-03t10:15:30 + 01:00 [欧洲/巴黎]”。
|
static DateTimeFormatter |
ISO_INSTANT
ISO即时格式化,格式或解析UTC瞬间,如“2011-12-03t10:15:30z”。
|
static DateTimeFormatter |
ISO_LOCAL_DATE
ISO日期格式化,格式或解析无偏移的日期,如“2011-12-03”。
|
static DateTimeFormatter |
ISO_LOCAL_DATE_TIME
ISO日期时间格式,格式或解析无偏移的日期时间,如“2011-12-03t10:15:30”。
|
static DateTimeFormatter |
ISO_LOCAL_TIME
ISO时间格式化,格式或解析无偏移的时间,如“15”或“10:15:30”。
|
static DateTimeFormatter |
ISO_OFFSET_DATE
ISO日期格式化,格式或解析一个偏置的日期,如“2011-12-03 + 01:00”。
|
static DateTimeFormatter |
ISO_OFFSET_DATE_TIME
ISO日期时间格式,格式或解析一个偏移量,日期时间,如“2011-12-03t10:15:30 + 01:00”。
|
static DateTimeFormatter |
ISO_OFFSET_TIME
ISO时间格式化,格式或解析的时间偏移,如“10:15 + 01:00”或“10:15:30 + 01:00”。
|
static DateTimeFormatter |
ISO_ORDINAL_DATE
ISO日期格式化,格式或解析的顺序日期没有偏移,如“2012-337”。
|
static DateTimeFormatter |
ISO_TIME
ISO时间格式化,格式或分析的时候,以抵消如果可用,如“15”、“10:15:30 '或' 10:15:30 + 01:00”。
|
static DateTimeFormatter |
ISO_WEEK_DATE
ISO日期格式化,格式或解析周以日期没有偏移,如“2012-w48-6”。
|
static DateTimeFormatter |
ISO_ZONED_DATE_TIME
ISO日期时间格式化,格式或将抵消和带日期时间,如“2011-12-03t10:15:30 + 01:00 [欧洲/巴黎]”。
|
static DateTimeFormatter |
RFC_1123_DATE_TIME
的rfc-1123日期时间格式,如“星期二,2008年6月3日”11:05:30 GMT。
|
Modifier and Type | Method and Description |
---|---|
String |
format(TemporalAccessor temporal)
使用此格式化程序格式的日期时间对象。
|
void |
formatTo(TemporalAccessor temporal, Appendable appendable)
格式日期时间对象使用此格式化程序的
Appendable 。
|
Chronology |
getChronology()
获取在格式化过程中使用的最重要的时间。
|
DecimalStyle |
getDecimalStyle()
得到decimalstyle期间要使用的格式。
|
Locale |
getLocale()
获取在格式化过程中使用的区域设置。
|
Set<TemporalField> |
getResolverFields()
获取旋转变压器领域中使用解析。
|
ResolverStyle |
getResolverStyle()
得到的解析式中使用解析。
|
ZoneId |
getZone()
获取在格式化过程中使用的最重要的区域。
|
static DateTimeFormatter |
ofLocalizedDate(FormatStyle dateStyle)
返回国际标准的日期格式的特定区域日期格式。
|
static DateTimeFormatter |
ofLocalizedDateTime(FormatStyle dateTimeStyle)
返回一个区域设置特定的日期时间格式为ISO年表。
|
static DateTimeFormatter |
ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)
返回国际标准组织的特定日期和时间格式。
|
static DateTimeFormatter |
ofLocalizedTime(FormatStyle timeStyle)
返回国际标准组织的特定区域时间格式。
|
static DateTimeFormatter |
ofPattern(String pattern)
创建一个格式化程序使用指定的模式。
|
static DateTimeFormatter |
ofPattern(String pattern, Locale locale)
创建一个格式化程序使用指定的模式和现场。
|
TemporalAccessor |
parse(CharSequence text)
充分分析文本产生的时空对象。
|
TemporalAccessor |
parse(CharSequence text, ParsePosition position)
分析文本使用此格式化程序,提供对文本位置控制。
|
<T> T |
parse(CharSequence text, TemporalQuery<T> query)
全面解析文本生成一个指定类型的对象。
|
TemporalAccessor |
parseBest(CharSequence text, TemporalQuery<?>... queries)
全面解析文本生成一个指定类型的对象。
|
static TemporalQuery<Period> |
parsedExcessDays()
提供了对被解析过的多余天数的查询。
|
static TemporalQuery<Boolean> |
parsedLeapSecond()
提供了一个访问是否是第二次的查询的查询。
|
TemporalAccessor |
parseUnresolved(CharSequence text, ParsePosition position)
分析文本使用此格式化程序,没有解决的结果,为先进的使用案例。
|
Format |
toFormat()
作为一个
java.text.Format 实例返回此格式化程序。
|
Format |
toFormat(TemporalQuery<?> parseQuery)
作为一个
java.text.Format 实例解析,将使用指定的查询将返回此格式化程序。
|
String |
toString()
返回一个描述的基本程序。
|
DateTimeFormatter |
withChronology(Chronology chrono)
返回一个格式化程序的一个新的重写这个年表。
|
DateTimeFormatter |
withDecimalStyle(DecimalStyle decimalStyle)
返回一个格式化程序的一个新的decimalstyle这。
|
DateTimeFormatter |
withLocale(Locale locale)
返回一个格式化程序与这一个新的地方。
|
DateTimeFormatter |
withResolverFields(Set<TemporalField> resolverFields)
返回一个格式化程序与这一套新的解析器的领域。
|
DateTimeFormatter |
withResolverFields(TemporalField... resolverFields)
返回一个格式化程序与这一套新的解析器的领域。
|
DateTimeFormatter |
withResolverStyle(ResolverStyle resolverStyle)
返回一个格式化程序的一个新的解析器风格这。
|
DateTimeFormatter |
withZone(ZoneId zone)
返回一个格式化程序的一个新的覆盖区,这。
|
public static final DateTimeFormatter ISO_LOCAL_DATE
这将返回一个可格式化和解析ISO-8601扩展本地日期格式不变的格式化程序。该格式由:
year
。在0000至9999年的范围内将预先填充由零,以确保四位数字。年范围以外会有一个前缀的正的或负的符号。month-of-year
两位数。这是预先填充的零,以确保两个数字。day-of-month
两位数。这是预先填充的零,以确保两个数字。返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_OFFSET_DATE
这将返回一个可格式化和解析ISO-8601扩展偏移日期格式不变的格式化程序。该格式由:
ISO_LOCAL_DATE
offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_DATE
这将返回一个可格式化和解析ISO-8601延长日期格式不变的格式化程序。该格式由:
ISO_LOCAL_DATE
offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。这个格式有一个可选的元素,它可能需要使用parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
解析。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_LOCAL_TIME
这将返回一个可格式化和解析ISO-8601格式扩展当地时间不变的格式化程序。该格式由:
hour-of-day
两位数。这是预先填充的零,以确保两个数字。minute-of-hour
两位数。这是预先填充的零,以确保两个数字。second-of-minute
两位数。这是预先填充的零,以确保两个数字。nano-of-second
。正如许多数字将输出所需。返回格式化没有重写年表或区。它使用STRICT
解析式。
public static final DateTimeFormatter ISO_OFFSET_TIME
这将返回一个可格式化和解析ISO-8601格式扩展偏移时间不变的格式化程序。该格式由:
ISO_LOCAL_TIME
offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。返回格式化没有重写年表或区。它使用STRICT
解析式。
public static final DateTimeFormatter ISO_TIME
这将返回一个可格式化和解析ISO-8601格式扩展偏移时间不变的格式化程序。该格式由:
ISO_LOCAL_TIME
offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。这个格式有一个可选的元素,它可能需要使用parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
解析。
返回格式化没有重写年表或区。它使用STRICT
解析式。
public static final DateTimeFormatter ISO_LOCAL_DATE_TIME
这将返回一个可格式化和解析ISO-8601扩展偏移日期时间格式不变的格式化程序。该格式由:
ISO_LOCAL_DATE
ISO_LOCAL_TIME
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_OFFSET_DATE_TIME
这将返回一个可格式化和解析ISO-8601扩展偏移日期时间格式不变的格式化程序。该格式由:
ISO_LOCAL_DATE_TIME
offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_ZONED_DATE_TIME
这将返回一个可格式化和解析的格式,扩展扩展抵消ISO-8601日期时间格式添加时区一成不变的格式化程序。方括号中的部分不是ISO-8601标准的一部分。该格式由:
ISO_OFFSET_DATE_TIME
ZoneOffset
然后格式完成。zone ID
。这是不是对ISO-8601标准部分。解析是区分大小写的。返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_DATE_TIME
这将返回一个可格式化和解析ISO-8601局部扩大或偏移日期时间格式不变的格式化程序,以及扩展的非ISO形式指定时区。该格式由:
ISO_LOCAL_DATE_TIME
offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。ZoneOffset
然后格式完成。zone ID
。这是不是对ISO-8601标准部分。解析是区分大小写的。这个格式有一个可选的元素,它可能需要使用parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
解析。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_ORDINAL_DATE
这将返回一个可格式化和解析ISO-8601扩展序号日期格式不变的格式化程序。该格式由:
year
。在0000至9999年的范围内将预先填充由零,以确保四位数字。年范围以外会有一个前缀的正的或负的符号。day-of-year
三位数。这是预先填充的零,以确保三位数字。offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。这个格式有一个可选的元素,它可能需要使用parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
解析。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_WEEK_DATE
这将返回一个可格式化和解析ISO-8601扩展基础的日期格式周不变的格式化程序。该格式由:
week-based-year
。在0000至9999年的范围内将预先填充由零,以确保四位数字。年范围以外会有一个前缀的正的或负的符号。week-of-week-based-year
两位数。这是预先填充的零,以确保三位数字。day-of-week
一位数。从星期一(1)到星期日(7)的价值。offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。这个格式有一个可选的元素,它可能需要使用parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
解析。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter ISO_INSTANT
这将返回一个可格式化和解析ISO-8601格式不变的格式化的瞬间。格式化时,第二分钟总是输出。第二个输出的纳米级为零,三,六或九位数字为必要。当解析时,需要至少需要秒字段。从零到九的分数秒被解析。不使用本地化的十进制样式。
这是一个特殊的格式化程序旨在让人类可读形式的Instant
,Instant
类设计只代表一个时间点和内部存储一个值来从一个固定的时期1970-01-01z。这样,一个Instant
不能被格式化为日期或时间不提供某种形式的时区。这种格式允许Instant
被格式化,通过提供使用ZoneOffset.UTC
合适的转换。
该格式由:
ISO_OFFSET_DATE_TIME
在瞬间转换从ChronoField.INSTANT_SECONDS
和ChronoField.NANO_OF_SECOND
使用UTC
偏移。解析是不区分大小写的。返回格式化没有重写年表或区。它使用STRICT
解析式。
public static final DateTimeFormatter BASIC_ISO_DATE
这将返回一个可格式化和解析ISO-8601基本局部日期格式不变的格式化程序。该格式由:
year
。只有在0000到9999的范围内是支持的。month-of-year
两位数。这是预填充零保证两位数。day-of-month
两位数。这是预填充零保证两位数。offset ID
。如果偏移有秒然后他们会处理即使不是ISO-8601标准的一部分。解析是不区分大小写的。这个格式有一个可选的元素,它可能需要使用parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery<?>...)
解析。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用STRICT
解析式。
public static final DateTimeFormatter RFC_1123_DATE_TIME
这将返回一个可格式化和分析大部分的rfc-1123格式不变的格式化程序。rfc-1123更新RFC-822改变年两位数四。这个实现需要一四个数字的一年。此实现也不处理北美或军事区的名称,只有“标准时间”和偏移量。
该格式由:
day-of-week
。day-of-month
。month-of-year
。year
。只有在0000到9999的范围内是支持的。hour-of-day
两位数。这是预先填充的零,以确保两个数字。minute-of-hour
两位数。这是预先填充的零,以确保两个数字。second-of-minute
两位数。这是预先填充的零,以确保两个数字。offset ID
。零使用的偏移量为“标准时间”。北美洲区域名称和军事区名称不处理。解析是不区分大小写的。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用SMART
解析式。
public static DateTimeFormatter ofPattern(String pattern)
此方法将创建一个格式化程序基于一个简单的pattern of letters and symbols在类文档描述。例如,d MMM uuuu
将格式为“2011”2011-12-03月3。
格式化程序将使用default FORMAT locale
。这可以使用withLocale(Locale)
在返回格式化或者使用这种方法的ofPattern(String, Locale)
变改。
返回格式化没有重写年表或区。它采用SMART
解析式。
pattern
的模式使用,不为空
IllegalArgumentException
-如果模式是无效的
DateTimeFormatterBuilder.appendPattern(String)
public static DateTimeFormatter ofPattern(String pattern, Locale locale)
此方法将创建一个格式化程序基于一个简单的pattern of letters and symbols在类文档描述。例如,d MMM uuuu
将格式为“2011”2011-12-03月3。
格式化程序将使用指定的区域设置。这可以使用withLocale(Locale)
在返回格式化程序的改变
返回格式化没有重写年表或区。它采用SMART
解析式。
pattern
的模式使用,不为空
locale
-现场使用,不为空
IllegalArgumentException
-如果模式是无效的
DateTimeFormatterBuilder.appendPattern(String)
public static DateTimeFormatter ofLocalizedDate(FormatStyle dateStyle)
这将返回一个格式化,格式化或分析日期。使用不同的区域设置的精确格式模式。
现场是由格式化程序确定。格式化程序直接返回该方法将使用default FORMAT locale
。现场可以使用withLocale(Locale)
在这种方法的结果控制。
注意局部模式是懒洋洋地望着。这DateTimeFormatter
拥有风格要求和现场,查找所需的需求模式。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用SMART
解析式。
dateStyle
的格式化方式获得,不为空
public static DateTimeFormatter ofLocalizedTime(FormatStyle timeStyle)
这将返回一个格式化,格式化或分析一次。使用不同的区域设置的精确格式模式。
现场是由格式化程序确定。格式化程序直接返回该方法将使用default FORMAT locale
。现场可以使用withLocale(Locale)
在这种方法的结果控制。
注意局部模式是懒洋洋地望着。这DateTimeFormatter
拥有风格要求和现场,查找所需的需求模式。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用SMART
解析式。
timeStyle
的格式化方式获得,不为空
public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateTimeStyle)
这将返回一个格式化,格式化或分析日期时间。使用不同的区域设置的精确格式模式。
现场是由格式化程序确定。格式化程序直接返回该方法将使用default FORMAT locale
。现场可以使用withLocale(Locale)
在这种方法的结果控制。
注意局部模式是懒洋洋地望着。这DateTimeFormatter
拥有风格要求和现场,查找所需的需求模式。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用SMART
解析式。
dateTimeStyle
的格式化方式获得,不为空
public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)
这将返回一个格式化,格式化或分析日期时间。使用不同的区域设置的精确格式模式。
现场是由格式化程序确定。格式化程序直接返回该方法将使用default FORMAT locale
。现场可以使用withLocale(Locale)
在这种方法的结果控制。
注意局部模式是懒洋洋地望着。这DateTimeFormatter
拥有风格要求和现场,查找所需的需求模式。
返回格式化程序有一个年表的ISO设置以确保在其他日历系统日期正确转换。它没有覆盖区,采用SMART
解析式。
dateStyle
-日期格式化方式获得,不为空
timeStyle
-时间格式化方式获得,不为空
public static final TemporalQuery<Period> parsedExcessDays()
这是返回一个单query提供附加信息的解析。该查询总是返回一个非空期间,而返回的是一零个周期,而不是空的。
有两种情况下,此查询可以返回一个非零周期。
ResolverStyle
是LENIENT
和时间解析没有日期,然后解析的结果完全由LocalTime
和过量Period
在天。ResolverStyle
是SMART
和时间解析没有约会的时间是24:00:00,然后解析的结果由一个完整的一天LocalTime
00:00:00和过量的Period
。在这两种情况下,如果一个完整的ChronoLocalDateTime
或Instant
解析,然后剩余的日子添加到日期部分。因此,此查询将返回一零个周期。
的SMART
行为处理日24:00结束共同价值”。在LENIENT
模式处理也产生相同的结果:
文本来解析分析的对象多余的天数“2012-12-03t00:00”localdatetime,(2012,12,3,0,0)零“2012-12-03t24:00”localdatetime,(2012,12,4,0,0)零“当地时间00:00”,(0,0)零“日”的形式,(0,0)(1)天内。查询可以使用如下:
temporalaccessor解析=格式化解析(STR);当地时间=解析。查询(本地时间::从);期extradays =解析。查询(datetimeformatter。parsedexcessdays());
public static final TemporalQuery<Boolean> parsedLeapSecond()
这是返回一个单query提供附加信息的解析。该查询总是返回一个非空的布尔值,如果分析看到一个跳跃的第二个错误,如果不是。
即时分析处理的特殊“闰秒”时间“23:59:60”。闰秒发生在“23:59:60”在UTC时区,但在不同时区的其他地方的时候。为了避免这种潜在歧义,飞跃秒的处理是有限的,DateTimeFormatterBuilder.appendInstant()
,方法总是将即时与UTC时区偏移。
如果时间23:59:60”接收,然后一个简单的转换应用,59分钟60秒更换。此查询可用于解析结果,以确定是否作出第二次调整。该查询将返回一个多余的,如果它确实调整删除的第二次,和零,如果不是。注意,应用一个闰秒平滑机制,如utc-sls,是应用程序的责任,如下:
temporalaccessor解析=格式化解析(STR);即时即时=解析的查询(即时::从);如果(解析。查询(datetimeformatter。parsedleapsecond())){/验证跳跃的第二个是正确的,并应用正确的平滑}
public Locale getLocale()
这是用来查找需要特定定位的格式化程序的任何部分,如文本或局部模式。
public DateTimeFormatter withLocale(Locale locale)
这是用来查找需要特定定位的格式化程序的任何部分,如文本或局部模式。
此实例是不可变的,不受此方法调用的影响。
locale
-新的现场,不为空
public DecimalStyle getDecimalStyle()
public DateTimeFormatter withDecimalStyle(DecimalStyle decimalStyle)
此实例是不可变的,不受此方法调用的影响。
decimalStyle
-新的decimalstyle,不空
public Chronology getChronology()
这返回重写的时间,用于转换日期。默认情况下,格式化没有重写年表,返回null。看到了更多的细节withChronology(Chronology)
压倒一切。
public DateTimeFormatter withChronology(Chronology chrono)
这会返回一个类似的状态,但这个格式化格式化程序重写年表集。默认情况下,格式化没有重写年表,返回null。
如果添加了重写,那么任何格式化或解析的日期都会受到影响。
当格式化时,如果时间对象包含一个日期,那么它将被转换为覆盖时间的日期。是否包含一个日期时间的查询EPOCH_DAY
场确定。任何时间或区域将保留不变,除非重写。
如果时空对象不包含日期,但不包含一个或多个ChronoField
日期字段,然后DateTimeException
抛出。在所有其他情况下,覆盖的时间顺序添加到时间,取代任何以前的时间顺序,但不改变日期/时间。
当解析时,有两个不同的情况来考虑。如果序列已经直接从文本分析,也许是因为使用了DateTimeFormatterBuilder.appendChronologyId()
,然后重写年表没有影响。如果没有带已经被解析,然后重写年表将用于解释ChronoField
值为日期根据日期解决年代学规则。
此实例是不可变的,不受此方法调用的影响。
chrono
-新的年表,null,如果没有重写
public ZoneId getZone()
这将覆盖区,用于转换的瞬间。默认情况下,格式化程序没有覆盖区,返回null。看到了更多的细节withZone(ZoneId)
压倒一切。
public DateTimeFormatter withZone(ZoneId zone)
这会返回一个类似的状态,但这个格式化格式化程序的覆盖区。默认情况下,格式化程序没有覆盖区,返回null。
如果添加了重写,那么任何格式化或解析的即时都会受到影响。
当格式化时,如果时间对象包含一个瞬间,那么它将被转换为一个分区的时间,使用覆盖区。无论时间是一个即时通过查询INSTANT_SECONDS
场确定。如果输入一个年表,然后将被保留,除非重写。如果输入没有年表,如Instant
,然后将使用ISO年表。
如果时间对象不包含一个即时对象,但确实包含一个偏移量,然后一个额外的检查。如果标准化的覆盖区是一个偏移量,不同的时间偏移,然后DateTimeException
抛出。在所有其他情况下,覆盖区域被添加到时间,取代任何以前的区域,但不改变日期/时间。
当解析时,有两个不同的情况来考虑。如果一个区已直接从文本分析,也许是因为用的是DateTimeFormatterBuilder.appendZoneId()
,那么这个覆盖区没有影响。如果没有带已经被解析,那么这个覆盖区将包含在结果的解析,它可以用来建立时间和日期时间。
此实例是不可变的,不受此方法调用的影响。
zone
-新的覆盖区,空如果不重写
public ResolverStyle getResolverStyle()
这将返回解析器的风格,用在第二阶段解析当场分解为日期和时间。默认情况下,一个格式化的SMART
解析式。看到withResolverStyle(ResolverStyle)
详情。
public DateTimeFormatter withResolverStyle(ResolverStyle resolverStyle)
这会返回一个类似的状态,但这种格式化格式化程序的解析式集。默认情况下,一个格式化的SMART
解析式。
改变旋转式只有一个作用解析。解析一个文本字符串发生在两个阶段。1阶段是一个基本的文本解析,根据添加到生成器的字段。相2将解析的字段值对解析成日期和/或时间对象。解析式是用来控制如何解决,发生2期。看到ResolverStyle
更多信息可供选择。
此实例是不可变的,不受此方法调用的影响。
resolverStyle
-新的解析式,不为空
public Set<TemporalField> getResolverFields()
这将返回变压器领域,用于在第二阶段解析当场分解为日期和时间。默认情况下,格式化程序没有解决的领域,从而返回null。更多细节见withResolverFields(Set)
。
public DateTimeFormatter withResolverFields(TemporalField... resolverFields)
这会返回一个类似的状态,但这种格式化格式化程序解析器的字段集。默认情况下,格式化没有解析的领域。
改变溶剂领域只有一个作用解析。解析一个文本字符串发生在两个阶段。1阶段是一个基本的文本解析,根据添加到生成器的字段。相2将解析的字段值对解析成日期和/或时间对象。解析字段用于过滤阶段1和2之间的场值对。
这可以用于在两个或多个日期或时间可能解决的方法之间进行选择。例如,如果格式化程序包含年、月、日,月和日的一年,然后有两种方法来解决一个日期。随着争论YEAR
和DAY_OF_YEAR
调用此方法将确保日期是用年日年解决,有效的意义,月和日的月是在解决阶段忽视。
以类似的方式,此方法可以被用来忽略其他将被交叉检查的次要字段。例如,如果格式化程序包含年、月、日,月,星期,然后只有一个办法可以解决一个日期,但解析值一周将对解决日期交叉检查。随着争论YEAR
调用此方法,MONTH_OF_YEAR
和DAY_OF_MONTH
将确保日期是有效解决,但没有任何交叉检查星期几。
在实施条件中,该方法的行为如下。解析阶段的结果可以被认为是一个字段到值的映射。该方法的行为是使该映射在1和2之间进行筛选,并移除那些指定的所有字段以外的其他参数的方法。
此实例是不可变的,不受此方法调用的影响。
resolverFields
-旋转变压器领域的新领域,如果不空
public DateTimeFormatter withResolverFields(Set<TemporalField> resolverFields)
这会返回一个类似的状态,但这种格式化格式化程序解析器的字段集。默认情况下,格式化没有解析的领域。
改变溶剂领域只有一个作用解析。解析一个文本字符串发生在两个阶段。1阶段是一个基本的文本解析,根据添加到生成器的字段。相2将解析的字段值对解析成日期和/或时间对象。解析字段用于过滤阶段1和2之间的场值对。
这可以用于在两个或多个日期或时间可能解决的方法之间进行选择。例如,如果格式化程序包含年、月、日,月和日的一年,然后有两种方法来解决一个日期。随着争论YEAR
和DAY_OF_YEAR
调用此方法将确保日期是用年日年解决,有效的意义,月和日的月是在解决阶段忽视。
以类似的方式,此方法可以被用来忽略其他将被交叉检查的次要字段。例如,如果格式化程序包含年、月、日,月,星期,然后只有一个办法可以解决一个日期,但解析值一周将对解决日期交叉检查。随着争论YEAR
调用此方法,MONTH_OF_YEAR
和DAY_OF_MONTH
将确保日期是有效解决,但没有任何交叉检查星期几。
在实施条件中,该方法的行为如下。解析阶段的结果可以被认为是一个字段到值的映射。该方法的行为是使该映射在1和2之间进行筛选,并移除那些指定的所有字段以外的其他参数的方法。
此实例是不可变的,不受此方法调用的影响。
resolverFields
-旋转变压器领域的新领域,如果不空
public String format(TemporalAccessor temporal)
这种格式的日期,时间,使用格式化程序规则的字符串。
temporal
-格式的时空对象,不为空
DateTimeException
如果格式化过程中发生错误
public void formatTo(TemporalAccessor temporal, Appendable appendable)
Appendable
。
将格式化的日期时间输出到指定的目的地。Appendable
是一个通用的接口,是由所有关键字符输出类包括StringBuffer
,StringBuilder
实施,PrintStream
和Writer
。
虽然Appendable
方法抛出一个IOException
,这种方法不。相反,任何IOException
包在运行时异常。
temporal
-格式的时空对象,不为空
appendable
-格式可追加,不空
DateTimeException
如果格式化过程中发生错误
public TemporalAccessor parse(CharSequence text)
这对整个文本产生的时空对象。它使用parse(CharSequence, TemporalQuery)
有用通常更多。这种方法的结果是TemporalAccessor
已解决,运用基本的验证检查,以确保有效的日期时间。
如果解析完成而不读取文本的整个长度,或者在解析或合并过程中发生了一个问题,则抛出一个异常。
text
-解析文本,不空
DateTimeParseException
如果无法解析请求的结果
public TemporalAccessor parse(CharSequence text, ParsePosition position)
这一分析文本不需要解析从字符串的开始或结束。这种方法的结果是TemporalAccessor
已解决,运用基本的验证检查,以确保有效的日期时间。
本文将从指定的开始ParsePosition
解析。文本的整个长度不需要解析的ParsePosition
将更新与指标在分析结束。
此方法的操作是使用类似的方法对java.text.Format
ParsePosition
略有不同。这类将返回错误使用误差指标的ParsePosition
。相比之下,这种方法会出现错误时抛出一个DateTimeParseException
,含误差指标的异常。这种行为的改变是必要的,因为在这个数据处理中分析和解决日期/时间的复杂性增加了。
如果格式化程序将同场不止一次不同的值,结果将是一个错误。
text
-解析文本,不空
position
-位置解析,解析和长度的任何错误的索引更新,不为空
DateTimeParseException
如果无法解析请求的结果
IndexOutOfBoundsException
-如果位置是无效的
public <T> T parse(CharSequence text, TemporalQuery<T> query)
大多数应用程序应该使用此方法进行解析。它可以分析整个文本生产所需的时间。查询是一个典型的方法参考一from(TemporalAccessor)
方法。例如:
localdatetime DT =解析器解析(STR,localdatetime::从);如果解析完成没有阅读文本的整个长度,或发生问题,在解析过程中或合并,然后抛出一个异常。
T
-解析日期时间类型
text
-解析文本,不空
query
-查询定义的类型解析,不空
DateTimeParseException
如果无法解析请求的结果
public TemporalAccessor parseBest(CharSequence text, TemporalQuery<?>... queries)
这种分析方法是方便使用时,解析器可以处理可选的元素。例如,一个“uuuu MM DD HH模式。毫米[ VV ]可以完全解析到一个ZonedDateTime
,或部分解析为一个LocalDateTime
。查询必须指定顺序,从最好的匹配的全解析选项,并以最坏的匹配最小的解析选项结束。查询是一个典型的方法参考一from(TemporalAccessor)
方法。
结果与第一型,成功地解析相关。通常,应用程序将使用instanceof
检查结果。例如:
temporalaccessor DT =解析器。parsebest(STR,zoneddatetime::::,localdatetime从);如果(DT是zoneddatetime){…其他{ }…}如果解析完成没有阅读文本的整个长度,或发生问题,在解析过程中或合并,然后抛出一个异常。
text
-解析文本,不空
queries
定义类型试图解析的查询,必须实现
TemporalAccessor
,不空
IllegalArgumentException
-如果指定了2种之多
DateTimeParseException
如果无法解析请求的结果
public TemporalAccessor parseUnresolved(CharSequence text, ParsePosition position)
解析实现为一个两阶段的操作。首先,文字使用的格式化程序定义的布局分析,生产Map
场值,一个ZoneId
和Chronology
。第二,解析的数据被解析,通过验证,组合和简化各个领域到更有用的。此方法执行解析阶段,但不是解决阶段。
这种方法的结果是TemporalAccessor
所代表的数据作为输入的视。价值观没有得到验证,从而解析日期字符串“2012-00-65”会导致时间与三场年“2012”“0”,月日和月的“65”。
本文将从指定的开始ParsePosition
解析。文本的整个长度不需要解析的ParsePosition
将更新与指标在分析结束。
错误返回使用的ParsePosition
误差指标领域而不是DateTimeParseException
。返回的错误索引将被设置为指示该错误的索引。在使用上下文之前,调用方必须检查错误。
如果格式化程序将同场不止一次不同的值,结果将是一个错误。
这种方法的目的是用于在分析过程中需要访问内部状态的高级用例。典型的应用程序应该使用parse(CharSequence, TemporalQuery)
或解析法对目标类型。
text
-解析文本,不空
position
-位置解析,解析和长度的任何错误的索引更新,不为空
DateTimeException
-如果在解析过程中出现了一些问题
IndexOutOfBoundsException
-如果位置是无效的
public Format toFormat()
java.text.Format
实例返回此格式化程序。
返回的Format
实例将格式的任何TemporalAccessor
解析到一个解决TemporalAccessor
。
例外将遵循Format
的定义,在格式和ParseException
或空在解析过程中看到这些方法的细节IllegalArgumentException
。格式不支持属性返回的字符串格式。
public Format toFormat(TemporalQuery<?> parseQuery)
java.text.Format
实例解析,将使用指定的查询将返回此格式化程序。
返回的Format
实例将格式的任何TemporalAccessor
解析到指定的类型。类型必须是由parse(java.lang.CharSequence)
。
例外将遵循Format
的定义,在格式和ParseException
或空在解析过程中看到这些方法的细节IllegalArgumentException
。格式不支持属性返回的字符串格式。
parseQuery
-查询定义的类型解析,不空
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.