public final class DateTimeFormatterBuilder extends Object
这允许一个DateTimeFormatter
被创建。所有的日期时间格式创建的最终使用这个生成器。
日期时间的基本元素都可以添加:
最后,一个速记的模式,主要是兼容java.text.SimpleDateFormat SimpleDateFormat
可以使用,看appendPattern(String)
。在实践中,这种简单的分析模式和呼吁者的其他方法。
Constructor and Description |
---|
DateTimeFormatterBuilder()
构造生成器的一个新实例。
|
public static String getLocalizedDateTimePattern(FormatStyle dateStyle, FormatStyle timeStyle, Chronology chrono, Locale locale)
dateStyle
-日期formatstyle
timeStyle
-时间formatstyle
chrono
的年表,非空
locale
-现场,非空
IllegalArgumentException
-如果datestyle和timestyle是空的
public DateTimeFormatterBuilder parseCaseSensitive()
解析可以是大小写敏感的或不敏感的-默认情况下,它是区分大小写的。此方法允许分析的情况下的灵敏度设置被更改。
调用此方法改变了生成器的状态,使得所有后续生成器方法调用都将在敏感模式下解析文本。看到对面设置parseCaseInsensitive()
。在生成器中的任何一点都可以调用解析大小写敏感/不敏感的方法,因此解析器可以在解析过程中的多个实例分析模式之间交换。
因为默认是区分大小写的,这个方法只能用于一次调用后#parseCaseInsensitive
。
public DateTimeFormatterBuilder parseCaseInsensitive()
解析可以是大小写敏感的或不敏感的-默认情况下,它是区分大小写的。此方法允许分析的情况下的灵敏度设置被更改。
调用此方法改变了生成器的状态,使得所有后续生成器方法调用都将在不区分大小写模式下解析文本。看到对面设置parseCaseSensitive()
。在生成器中的任何一点都可以调用解析大小写敏感/不敏感的方法,因此解析器可以在解析过程中的多个实例分析模式之间交换。
public DateTimeFormatterBuilder parseStrict()
解析可以是严格的或宽松的默认其严格。这控制的灵活性,在匹配的文本和符号样式的程度。
使用时,该方法改变了分析从这一点起严格。严格的是默认的,这通常只需要在调用parseLenient()
。的变化将继续生效直至格式化程序,最终构建或直到parseLenient
叫做结束。
public DateTimeFormatterBuilder parseLenient()
解析可以是严格的或宽松的默认其严格。这控制的灵活性,在匹配的文本和符号样式的程度。应用程序调用此方法通常应该也叫parseCaseInsensitive()
。
使用时,该方法改变了分析从这一点起,宽。的变化将继续生效直至格式化程序,最终构建或直到parseStrict
叫做结束。
public DateTimeFormatterBuilder parseDefaulting(TemporalField field, long value)
这个附加指令到Builder为解析结果注入一个默认值。这与格式化程序的可选部分,结合特别有用。
例如,考虑一个格式化,解析一年,其后是一个可选的月,另一个可选的日期。使用这样的格式化程序需要调用代码来检查是否完整日期,年月或是一年被解析。此方法可以用于默认月和月的一天,以一个合理的值,如第一个月,允许调用代码总是得到一个日期。
在格式化过程中,这种方法没有任何效果。
在解析过程中,检查分析的当前状态。如果指定的字段没有关联的值,因为它没有在该点上成功解析,那么指定的值将被注入到解析结果中。注射是立竿见影的,因此场值对将格式化程序中所有后续元素可见。因此,这种方法通常被称为在生成器的结束时。
field
-领域的默认值,不能为空
value
-默认字段值
public DateTimeFormatterBuilder appendValue(TemporalField field)
该字段的值将在一个格式输出。如果无法获得值,则将引发异常。
该值将打印为每一个整数值的正常格式。只有负数将被签名。没有填充将被添加。
对于可变宽度值如这通常表现贪婪的解析器,需要一个数字,但接受多位数的可能。这种行为可能会受到“相邻值分析”的影响。详情请参阅appendValue(java.time.temporal.TemporalField, int)
。
field
-现场追加,不空
public DateTimeFormatterBuilder appendValue(TemporalField field, int width)
该字段的值将在一个格式输出。如果无法获得值,则将引发异常。
该值将是零填充在左边。如果值的大小意味着它不能在宽度上打印,则抛出一个异常。如果字段的值为负,则在格式设置过程中引发异常。
这种方法支持一种特殊的解析技术,被称为“相邻值分析”。该技术解决了一个值,变量或固定宽度,其次是一个或多个固定长度值的问题。标准的解析器是贪婪的,因此通常会偷,由固定的宽度值的解析器,遵循可变宽度需要的数字。
没有行动是必需的启动“相邻值分析”。当有电话appendValue
制成,施工人员进入相邻的价值解析设置模式。如果在同一个生成器上的立即调用或调用的方法是为一个固定的宽度值,那么解析器将保留空间,以便解析的固定宽度值可以被解析。
例如,考虑builder.appendValue(YEAR).appendValue(MONTH_OF_YEAR, 2);
今年是可变宽度的解析1和19位之间。本月是一个固定宽度分析的2个数字。因为这些被添加到相同的生成器后,一年一年的解析器将保留两个数字的月解析。因此,文本“201106”将正确解析到一年的2011个月和一个月的6。不相邻的价值分析,今年会贪婪地解析所有六位数和不留月。
相邻值分析适用于每一组固定宽度不负值的解析器中,立即遵循任何一种价值,变量或固定宽度。调用任何其他的附加方法将结束相邻值解析的设置。因此,在你需要避免相邻值的分析行为,不可能的情况下,只需添加appendValue
到另一个DateTimeFormatterBuilder
和添加到这个生成器。
如果相邻的分析是有效的,那么分析必须匹配精确的指定数量的数字在严格和宽松的模式。此外,没有正面或负面的标志是允许的。
field
-现场追加,不空
width
-印刷领域的宽度,从1到19
IllegalArgumentException
-如果宽度是无效的
public DateTimeFormatterBuilder appendValue(TemporalField field, int minWidth, int maxWidth, SignStyle signStyle)
该字段的值将在一个格式输出。如果无法获得值,则将引发异常。
此方法提供了对数字格式的完全控制,包括零填充和正/负符号。
对于可变宽度值如这通常表现贪婪的解析器,接受尽可能多的数字。这种行为可能会受到“相邻值分析”的影响。详情请参阅appendValue(java.time.temporal.TemporalField, int)
。
在严格的解析模式,解析过的最小位数是minWidth
和最大是maxWidth
。在宽松的解析模式中,解析的数字的最小数量是一个,最大值为19(除了相邻的值解析的限制)。
如果这种方法是用相等的最小和最大宽度和一个NOT_NEGATIVE
则代表appendValue(TemporalField,int)
标志风格调用。在这种情况下,格式化和解析描述的行为发生。
field
-现场追加,不空
minWidth
-印刷领域最小字段宽度,从1到19
maxWidth
-印刷领域的最大字段宽度,从1到19
signStyle
-正/负输出的风格,不为空
IllegalArgumentException
如果宽度是无效的
public DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, int baseValue)
因为如去年因年代学领域,建议使用在大多数情况下,这种方法的appendValueReduced(TemporalField, int, int, ChronoLocalDate)
日期}变异。这种变体适用于简单的领域或工作,只有国际标准组织的时间。
对格式的width
和maxWidth
用来确定格式的字符数。如果他们是平等的,那么格式是固定的宽度。如果字段的值在使用width
字符然后降低值的范围baseValue
格式化否则值截断以适应maxWidth
。最右边的字符输出匹配的宽度,左填充零。
严格的解析,所允许的字符数的width
到maxWidth
解析。对于宽松的解析,字符的数目必须至少为1,小于10。如果数字解析数等于width
和值为正,该字段的值是第一个数大于或等于同重要人物baseValue
,否则价值解析的字段值。这可以减少价值被输入在basevalue和宽度值和绝对值范围值可以输入范围以外的值。
例如,一个1980
基值和宽度2
将有效值从1980
到2079
。在分析过程中,本文"12"
将导致价值2012
,值的范围内的最后两个字符是“12”。通过对比,分析文本"1915"
将导致价值1915
。
field
-现场追加,不空
width
-印刷和解析的领域宽,从1到10
maxWidth
-印刷领域的最大字段宽度,从1到10
baseValue
-有效值范围的基值
IllegalArgumentException
如果宽度或基值是无效的
public DateTimeFormatterBuilder appendValueReduced(TemporalField field, int width, int maxWidth, ChronoLocalDate baseDate)
这通常用于格式化和解析一二位数的一年。
基本日期是用来计算分析过程中的全部值的。例如,如果基准日期是1950-01-01然后解析值一二位数年份解析将在范围1950-01-01到2049-12-31。仅今年就从日期中提取,因此,基准日1950-08-25也解析的范围1950-01-01到2049-12-31。这种行为是必要的,以支持字段,如基于周的一年或其他日历系统中的解析值不符合标准的标准化的。
具体行为如下。分析全套领域,并确定有效的年代,使用的最后一个时间,如果它出现不止一次。然后将基准日期转换为有效的年代。然后提取指定字段从年代学特定基准日使用它来确定使用下面的baseValue
。
对格式的width
和maxWidth
用来确定格式的字符数。如果他们是平等的,那么格式是固定的宽度。如果字段的值在使用width
字符然后降低值的范围baseValue
格式化否则值截断以适应maxWidth
。最右边的字符输出匹配的宽度,左填充零。
严格的解析,所允许的字符数的width
到maxWidth
解析。对于宽松的解析,字符的数目必须至少为1,小于10。如果数字解析数等于width
和值为正,该字段的值是第一个数大于或等于同重要人物baseValue
,否则价值解析的字段值。这可以减少价值被输入在basevalue和宽度值和绝对值范围值可以输入范围以外的值。
例如,一个1980
基值和宽度2
将有效值从1980
到2079
。在分析过程中,本文"12"
将导致价值2012
,值的范围内的最后两个字符是“12”。通过对比,分析文本"1915"
将导致价值1915
。
field
-现场追加,不空
width
-印刷和解析的领域宽,从1到10
maxWidth
-印刷领域的最大字段宽度,从1到10
baseDate
-用于解析年表计算有效值的范围为基础的价值基准日期,不为空
IllegalArgumentException
如果宽度或基值是无效的
public DateTimeFormatterBuilder appendFraction(TemporalField field, int minWidth, int maxWidth, boolean decimalPoint)
该字段的分数值将被输出,包括前面的小数点。前面的值不是输出。例如,15分钟的价值第二将输出.25
。
印刷馏分的宽度可以被控制。将最小宽度设置为0将不会导致任何输出。印刷部分将有最小宽度的最小和最大宽度之间必要的尾随零省略。没有发生四舍五入,由于最大宽度-数字简单地丢弃。
当解析在严格的模式时,已解析的数字的数量必须在最小值和最大值之间。当解析在宽松模式时,最小宽度被认为是零,最大值为九。
如果无法获得值,则将引发异常。如果值为负,将引发异常。如果字段没有固定的有效值集,则将引发异常。如果在日期时间中的字段值将打印无效,则无法打印,并将引发异常。
field
-现场追加,不空
minWidth
-场不含小数点的最小宽度,从0到9
maxWidth
-场不含小数点的最大宽度,从1到9
decimalPoint
-是否输出本地化的小数点符号
IllegalArgumentException
-如果该字段有一个变量的有效值或宽度是无效的
public DateTimeFormatterBuilder appendText(TemporalField field)
该字段的文本将在一个格式输出。该值必须在该字段的有效范围内。如果无法获得值,则将引发异常。如果字段没有文本表示,那么将使用数字值。
该值将打印为每一个整数值的正常格式。只有负数将被签名。没有填充将被添加。
field
-现场追加,不空
public DateTimeFormatterBuilder appendText(TemporalField field, TextStyle textStyle)
该字段的文本将在一个格式输出。该值必须在该字段的有效范围内。如果无法获得值,则将引发异常。如果字段没有文本表示,那么将使用数字值。
该值将打印为每一个整数值的正常格式。只有负数将被签名。没有填充将被添加。
field
-现场追加,不空
textStyle
-文字样式使用,不为空
public DateTimeFormatterBuilder appendText(TemporalField field, Map<Long,String> textLookup)
标准的文本输出方法使用本地化的文本在JDK。此方法允许直接指定的文本。所提供的映射没有通过生成器验证,以确保格式化或解析是可能的,因此在以后使用时会抛出一个无效的映射。
提供文本的Map提供了相当大的灵活性,在格式化和分析。例如,一个遗留应用程序可能需要一个月或供应“杰纳”、“属于”、“妇幼保健院”等,这些不匹配的本地化的月份名称文字的标准设置。使用此方法,可以创建一个映射,它定义了每个值和文本之间的连接:
图 <长字符串> Map=新的HashMap <>();Map。把(1,“杰纳”);Map。把(2,“属于”);Map。把(3,“妇幼保健院”);…建设者。appendtext(month_of_year,Map); 长字符串>
其他用途可能是输出的值与一个后缀,如“第一”,“第二”,“第三”,或作为罗马数字“I”,“第二”,“第三”,“四”。
在格式化过程中,得到值,并检查它在有效范围内。如果文本是不可用的值,那么它是输出作为一个数字。在解析过程中,解析器将与文本和数字值的映射进行匹配。
field
-现场追加,不空
textLookup
-从价值到文本的Map
public DateTimeFormatterBuilder appendInstant()
时刻有一个固定的输出格式。他们被转变成一个带偏移UTC和使用标准ISO-8601格式格式的日期时间。用这个方法,格式化第二个输出的第二个输出零,三,六或九位数字作为必要。不使用本地化的十进制样式。
即时使用INSTANT_SECONDS
和任选的获得(@代码nano_of_second)。对INSTANT_SECONDS
的价值可能在LocalDateTime
最大范围。
的resolver style对即时分析无影响。对“24:00”处理为午夜在次日开始一天结束的时候。“23:59:59”处理在一定程度上跨越二次,详情请参阅DateTimeFormatter.parsedLeapSecond()
。
这种方法的另一种方法是将即时的格式/解析作为一个单一的时代秒值。这是通过使用appendValue(INSTANT_SECONDS)
。
public DateTimeFormatterBuilder appendInstant(int fractionalDigits)
时刻有一个固定的输出格式,虽然这种方法提供了对分数数字控制。他们被转变成一个带偏移UTC和使用标准ISO-8601格式印刷日期时间。不使用本地化的十进制样式。
的fractionalDigits
参数允许分数二输出被控制。指定零将导致没有小数位数输出。从1到9将输出一个越来越多的数字,如果必要的话,使用零右边的填充。特殊值- 1是用于输出多位数必须避免任何尾随零。
在严格模式下的解析时,已解析的数字的数量必须与小数位数相匹配。当解析在宽松模式时,任何数量的分数从零到九的数字被接受。
即时使用INSTANT_SECONDS
和任选的获得(@代码nano_of_second)。对INSTANT_SECONDS
的价值可能在LocalDateTime
最大范围。
的resolver style对即时分析无影响。对“24:00”处理为午夜在次日开始一天结束的时候。“23:59:59”处理在一定程度上跨越二次,详情请参阅DateTimeFormatter.parsedLeapSecond()
。
这种方法的另一种方法是将即时的格式/解析作为一个单一的时代秒值。这是通过使用appendValue(INSTANT_SECONDS)
。
fractionalDigits
-分数二位数的格式,从0到9,或1用多位数的必要
public DateTimeFormatterBuilder appendOffsetId()
这个附加格式/解析偏移ID生成器指令。这相当于调用appendOffset("HH:MM:ss", "Z")
。
public DateTimeFormatterBuilder appendOffset(String pattern, String noOffsetText)
这个附加格式/解析偏移ID生成器指令。
格式化过程中,偏移量是用一种机制相当于查询时间TemporalQueries.offset()
获得。它将使用下面定义的格式打印。如果偏移不能获得然后扔除非格式化程序的部分是可选的例外。
在解析过程中,使用下面定义的格式解析偏移量。如果偏移无法分析然后扔除非格式化程序的部分是可选的例外。
偏移的格式由必须是下列之一的模式来控制:
+HH
小时,忽略分钟和第二+HHmm
小时和分钟,如果非零,忽略第二,没有结+HH:mm
小时和分钟,如果非零,忽略第二,结肠+HHMM
小时和分钟,忽略第二,没有结+HH:MM
小时和分钟,忽略第二,结肠+HHMMss
小时和分钟,第二如果非零,无结肠+HH:MM:ss
小时和分钟,第二如果非零,结肠+HHMMSS
小时、分钟和秒,没有结+HH:MM:SS
小时、分钟和秒,结肠pattern
的模式使用,不为空
noOffsetText
-文本时使用的偏移量是零,不为空
public DateTimeFormatterBuilder appendLocalizedOffset(TextStyle style)
这将抵消局部区的建设者,对局部偏移的格式是由指定的style
控制方法:
格式化过程中,偏移量是用一种机制相当于查询时间TemporalQueries.offset()
获得。如果偏移不能获得然后扔除非格式化程序的部分是可选的例外。
在解析过程中,使用上述定义的格式解析偏移量。如果偏移无法分析然后扔除非格式化程序的部分是可选的例外。
style
-样式的使用,不为空
IllegalArgumentException
-如果风格不
full
也
short
public DateTimeFormatterBuilder appendZoneId()
这个附加格式/解析带身份证生成器指令。带ID是一个适合ZonedDateTime
严格的方式得到。相比之下,OffsetDateTime
没有适合使用这种方法带身份证,看到appendZoneOrOffsetId()
。
格式化过程中,区域是使用机制相当于查询时间TemporalQueries.zoneId()
获得。它将使用ZoneId.getId()
结果打印。如果区不能获得然后丢除非格式化程序的部分是可选的例外。
在解析过程中,文本必须匹配一个已知的区域或偏移量。有两种类型的区域ID,偏移量为基础的,如“+ 01:30”和基于区域的,如“欧洲/伦敦。这些都是不同的解析。如果解析从“+”、“-”,“但是”、“UTC”或“时间”,然后解析器预期的基础区偏移不匹配的基于区域的区。偏移的ID,如“+ 02:30,可能在分析开始,或以“UT”、“UTC”或“GMT”。偏移ID解析相当于使用appendOffset(String, String)
使用参数的HH:MM:学生和无偏移字符串“0”。如果解析从“UT”、“UTC”或“时间”,和解析器不能匹配抵消ZoneOffset.UTC
ID,然后选择。在所有其他情况下,基于已知区域的区域的列表是用来找到最长的可用匹配。如果没有发现匹配,并解析从“Z”,然后选择ZoneOffset.UTC
。解析器使用case sensitive设置。
例如,下面将解析:
“欧洲/伦敦”-- zoneid,(欧洲/伦敦)“Z”zoneoffset.utc“放”——zoneid,(“放”)“UTC”-- zoneid,(“时间”)“GMT”-- zoneid,(“时间”)“+ 01:30”-- zoneoffset,(“+ 01:30”)“超声+ 01:30”-- zoneoffset,(“+ 01:30”)“zoneoffset 01:30 UTC +”,(“+ 01:30”)“GMT + 01:30”-- zoneoffset,(“+ 01:30”)
appendZoneRegionId()
public DateTimeFormatterBuilder appendZoneRegionId()
ZoneOffset
。
该追加一个指令格式/解析带身份证生成器仅当它是一种基于区域的ID。
格式化过程中,区域是使用机制相当于查询时间TemporalQueries.zoneId()
获得。如果区域是一个ZoneOffset
或难以得到扔除非格式化程序的部分是可选的例外。如果该区域不是一个偏移量,然后带会使用ZoneId.getId()
区ID印刷。
在解析过程中,文本必须匹配一个已知的区域或偏移量。有两种类型的区域ID,偏移量为基础的,如“+ 01:30”和基于区域的,如“欧洲/伦敦。这些都是不同的解析。如果解析从“+”、“-”,“但是”、“UTC”或“时间”,然后解析器预期的基础区偏移不匹配的基于区域的区。偏移的ID,如“+ 02:30,可能在分析开始,或以“UT”、“UTC”或“GMT”。偏移ID解析相当于使用appendOffset(String, String)
使用参数的HH:MM:学生和无偏移字符串“0”。如果解析从“UT”、“UTC”或“时间”,和解析器不能匹配抵消ZoneOffset.UTC
ID,然后选择。在所有其他情况下,基于已知区域的区域的列表是用来找到最长的可用匹配。如果没有发现匹配,并解析从“Z”,然后选择ZoneOffset.UTC
。解析器使用case sensitive设置。
例如,下面将解析:
“欧洲/伦敦”-- zoneid,(欧洲/伦敦)“Z”zoneoffset.utc“放”——zoneid,(“放”)“UTC”-- zoneid,(“时间”)“GMT”-- zoneid,(“时间”)“+ 01:30”-- zoneoffset,(“+ 01:30”)“超声+ 01:30”-- zoneoffset,(“+ 01:30”)“zoneoffset 01:30 UTC +”,(“+ 01:30”)“GMT + 01:30”-- zoneoffset,(“+ 01:30”)
请注意,此方法是相同的appendZoneId()
除了用来获取区机制。请注意,解析接受偏移,而格式将永远不会产生一个。
appendZoneId()
public DateTimeFormatterBuilder appendZoneOrOffsetId()
该追加一个指令格式/解析最好的区或偏移ID生成器。带ID是在一个宽松的方式,第一次尝试找到一个真正的区域ID获得,如对ZonedDateTime
,然后试图找到一个偏移量,如对OffsetDateTime
。
格式化过程中,区域是使用机制相当于查询时间TemporalQueries.zone()
获得。它将使用ZoneId.getId()
打印结果。如果带不能获得然后丢除非格式化程序的部分是可选的例外。
在解析过程中,文本必须匹配一个已知的区域或偏移量。有两种类型的区域ID,偏移量为基础的,如“+ 01:30”和基于区域的,如“欧洲/伦敦。这些都是不同的解析。如果解析从“+”、“-”,“但是”、“UTC”或“时间”,然后解析器预期的基础区偏移不匹配的基于区域的区。偏移的ID,如“+ 02:30,可能在分析开始,或以“UT”、“UTC”或“GMT”。偏移ID解析相当于使用appendOffset(String, String)
使用参数的HH:MM:学生和无偏移字符串“0”。如果解析从“UT”、“UTC”或“时间”,和解析器不能匹配抵消ZoneOffset.UTC
ID,然后选择。在所有其他情况下,基于已知区域的区域的列表是用来找到最长的可用匹配。如果没有发现匹配,并解析从“Z”,然后选择ZoneOffset.UTC
。解析器使用case sensitive设置。
例如,下面将解析:
“欧洲/伦敦”-- zoneid,(欧洲/伦敦)“Z”zoneoffset.utc“放”——zoneid,(“放”)“UTC”-- zoneid,(“时间”)“GMT”-- zoneid,(“时间”)“+ 01:30”-- zoneoffset,(“+ 01:30”)“超声+ 01:30”-- zoneoffset,(“UT + 01:30”)“zoneoffset 01:30 UTC +”,(“01:30 UTC +”)“GMT + 01:30”-- zoneoffset,(GMT + 01:30”)
请注意,此方法是appendZoneId()
除了用来获取区机制相同。
appendZoneId()
public DateTimeFormatterBuilder appendZoneText(TextStyle textStyle)
这个附加格式/解析文本名称区建造一个指令。
格式化过程中,区域是使用机制相当于查询时间TemporalQueries.zoneId()
获得。如果区是一个ZoneOffset
将利用ZoneOffset.getId()
打印结果。如果该区域不是一个偏移,文本名称将抬头集在DateTimeFormatter
区域。如果时空对象被印代表一个瞬间,那么文字将夏季或冬季时间文本。如果文本查找没有找到合适的结果,然后将打印而不是ID
。如果带不能获得然后丢除非格式化程序的部分是可选的例外。
在解析过程中,无论是文本区域名称,区域标识或偏移被接受。许多文本区的名称不是唯一的,如CST可以为“中央标准时间”和“中国标准时间。在这种情况下,带身份证将由格式化程序的locale
和区域,标准区ID区域信息的确定为例,美国/ new_york为美国东部区。的appendZoneText(TextStyle, Set)
可以用来指定一套在这种情况下,优先ZoneId
。
textStyle
-文字样式使用,不为空
public DateTimeFormatterBuilder appendZoneText(TextStyle textStyle, Set<ZoneId> preferredZones)
这个附加格式/解析文本名称区建造一个指令。
格式化过程中,区域是使用机制相当于查询时间TemporalQueries.zoneId()
获得。如果区域是一个ZoneOffset
将利用ZoneOffset.getId()
打印结果。如果该区域不是一个偏移,文本名称将抬头集在DateTimeFormatter
现场。如果打印的时间对象是一个即时的,那么文本将是夏天或冬天的时间文本为适当。如果文本查找没有找到合适的结果,然后将打印而不是ID
。如果带不能获得然后丢除非格式化程序的部分是可选的例外。
在解析过程中,无论是文本区域名称,区域标识或偏移被接受。许多文本区的名称不是唯一的,如CST可以为“中央标准时间”和“中国标准时间。在这种情况下,带身份证将由格式化程序的locale
和区域,标准区ID区域信息的确定为例,美国/ new_york为美国东部区。这种方法还允许设置优先ZoneId
规定解析。如果所解析的纹理区域名称不是唯一的,则匹配的首选区域标识将被使用。如果该区域不能被解析然后扔除非格式化程序的部分是可选的例外。
textStyle
-文字样式使用,不为空
preferredZones
-优先区ID的设置,不为空
public DateTimeFormatterBuilder appendChronologyId()
这个附加格式/解析年表ID生成器指令。
在格式化的年代使用的机制相当于查询时间TemporalQueries.chronology()
获得。它将使用Chronology.getId()
结果打印。如果不能得到的年表然后扔除非格式化程序的部分是可选的例外。
在分析过程中,年表解析必须匹配一个在Chronology.getAvailableChronologies()
年表。如果时间不能被解析然后扔除非格式化程序的部分是可选的例外。解析器使用case sensitive设置。
public DateTimeFormatterBuilder appendChronologyText(TextStyle textStyle)
日历系统名称将在一个格式输出。如果无法获得该顺序,则将引发异常。日历系统名称是从年代。
textStyle
-文字样式使用,不为空
public DateTimeFormatterBuilder appendLocalized(FormatStyle dateStyle, FormatStyle timeStyle)
这将局部部分建设者,适合输出日期、时间或日期时间组合。的局部部分的格式是懒洋洋地看了四个项目的基础上:
dateStyle
timeStyle
DateTimeFormatter
的Locale
Chronology
,选择最好的DateTimeFormatter.withChronology(Chronology)
。
在分析过程中,如果一个年代已经被解析,那么它被使用。否则,从DateTimeFormatter.withChronology(Chronology)
默认使用,与IsoChronology
作为后备。
请注意,此方法提供了类似的功能,方法如DateFormat.getDateTimeInstance(int, int)
DateFormat
。
dateStyle
-日期样式使用,零意味着没有日期的要求
timeStyle
-使用时间的风格,零表示没有时间要求
IllegalArgumentException
-如果日期和时间类型无效
public DateTimeFormatterBuilder appendLiteral(char literal)
此字符将在一个格式输出。
literal
-附加的文字,不为空
public DateTimeFormatterBuilder appendLiteral(String literal)
此字符串将在一个格式输出。
如果文字是空的,没有添加到格式化程序。
literal
-附加的文字,不为空
public DateTimeFormatterBuilder append(DateTimeFormatter formatter)
该方法为添加的每个组成部分直接格式化该生成器具有相同的效果。
formatter
-格式化程序添加,不为空
public DateTimeFormatterBuilder appendOptional(DateTimeFormatter formatter)
这种方法添加每个组成部分直接向此生成器所包围的optionalStart()
和optionalEnd()
具有相同的效果。
格式化程序将格式化数据是否可以包含在它的所有领域。格式化程序将解析如果字符串匹配,否则不返回错误。
formatter
-格式化程序添加,不为空
public DateTimeFormatterBuilder appendPattern(String pattern)
所有的字母“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“文本分隔符逃跑“单引号”[可选部分启动可选部分结束#保留供将来使用保留未来使用保留未来使用
模式字母的计数确定格式。看到DateTimeFormatter为用户集中的模式描述。下表定义了如何将模式字母映射到生成器上的方式。
日期字段:图案字母输出日期。
模式计数等效生成器方法------- ----- --------------------------G 1 appendtext(chronofield.era,文本风格,短)GG 2 appendtext(chronofield.era,文本风格,短)3 appendtext GGG(chronofield.era,文本风格,短)科4 appendtext(chronofield.era,文本风格,全)ggggg 5 appendtext(chronofield.era,文本风格,窄)u 1 appendvalue(chronofield.year,1,19,signstyle。正常);UU 2 appendvaluereduced(chronofield.year,2,2000);3 appendvalue UUU(chronofield.year,3,19,signstyle。正常);美国U 4 .. appendvalue(chronofield.year,N,19,signstyle。exceeds_pad);1 appendvalue(chronofield.year_of_era,1,19,signstyle。正常);2 appendvaluereduced(chronofield.year_of_era YY,2,2000);3 appendvalue YYY(chronofield.year_of_era,3,19,signstyle。正常);Y。Y 4 .. appendvalue(chronofield.year_of_era,N,19,signstyle。exceeds_pad);1基于数字周年追加局部weekfields元YY 2附加特殊局部weekfields元减少数值周以年2位数;3年追加YYY基础数值周局部weekfields元(3,19,signstyle。正常);Y。Y 4。N追加基础年数字周局部weekfields元(n,19,signstyle。exceeds_pad);问1 appendvalue(isofields。quarter_of_year);QQ 2 appendvalue(isofields.quarter_of_year,2);3 appendtext QQQ(isofields.quarter_of_year,文本风格,短)4 appendtext QQQQ(isofields.quarter_of_year,文本风格,全)qqqqq 5 appendtext(isofields.quarter_of_year,文本风格,窄)问1 appendvalue(isofields。quarter_of_year);QQ 2 appendvalue(isofields.quarter_of_year,2);3 appendtext QQQ(isofields.quarter_of_year,文字风格。short_standalone)4 appendtext QQQQ(isofields.quarter_of_year,文字风格。full_standalone)qqqqq 5 appendtext(isofields.quarter_of_year,文字风格。narrow_standalone)我1 appendvalue(chronofield。month_of_year);2毫米appendvalue(chronofield.month_of_year,2);嗯,3 appendtext(chronofield.month_of_year,文本风格,短)这4 appendtext(chronofield.month_of_year,文本风格,全)mmmmm 5 appendtext(chronofield.month_of_year,文本风格,窄)l 1 appendvalue(chronofield。month_of_year);将2 appendvalue(chronofield.month_of_year,2);我3 appendtext(chronofield.month_of_year,文字风格。short_standalone)4 appendtext LLLL(chronofield.month_of_year,文字风格。full_standalone)lllll 5 appendtext(chronofield.month_of_year,文字风格。narrow_standalone)W 1附加特殊局部weekfields元每年的数字周1添加特殊局部weekfields元每年的数字周,零填充W 1附加特殊局部weekfields元为月的数字周D 1 appendvalue(chronofield。day_of_month)DD 2 appendvalue(chronofield.day_of_month,2)D 1 appendvalue(chronofield。day_of_year)DD 2 appendvalue(chronofield.day_of_year,2)3 appendvalue DDD(chronofield.day_of_year,3)F 1 appendvalue(chronofield。aligned_day_of_week_in_month)1 appendtext(chronofield.day_of_week,文本风格,短)EE 2 appendtext(chronofield.day_of_week,文本风格,短)3 appendtext EEE(chronofield.day_of_week,文本风格,短)eeee 4 appendtext(chronofield.day_of_week,文本风格,全)eeeee 5 appendtext(chronofield.day_of_week,文本风格,窄)1添加特殊局部weekfields元为一周的数字的一天EE 2附加特殊局部weekfields元为一周的数字的一天,零填充3 appendtext EEE(chronofield.day_of_week,文本风格,短)eeee 4 appendtext(chronofield.day_of_week,文本风格,全)eeeee 5 appendtext(chronofield.day_of_week,文本风格,窄)C 1附加特殊的局部weekfields元为一周的数字的一天3 appendtext CCC(chronofield.day_of_week,文字风格。short_standalone)中交4 appendtext(chronofield.day_of_week,文字风格。full_standalone)ccccc 5 appendtext(chronofield.day_of_week,文字风格。narrow_standalone)
时间字段:图案字母输出时间。
模式计数等效生成器方法------- ----- --------------------------1 appendtext(chronofield.ampm_of_day,文本风格,短)H 1 appendvalue(chronofield。clock_hour_of_ampm)HH 2 appendvalue(chronofield.clock_hour_of_ampm,2)H 1 appendvalue(chronofield。hour_of_day)HH 2 appendvalue(chronofield.hour_of_day,2)K 1 appendvalue(chronofield。clock_hour_of_day)公司2 appendvalue(chronofield.clock_hour_of_day,2)K 1 appendvalue(chronofield。hour_of_ampm)公司2 appendvalue(chronofield.hour_of_ampm,2)我1 appendvalue(chronofield。minute_of_hour)2毫米appendvalue(chronofield.minute_of_hour,2)1 appendvalue(chronofield。second_of_minute)SS 2 appendvalue(chronofield.second_of_minute,2)美国的1 .. appendfraction(chronofield.nano_of_second,N,N,假)1 appendvalue(chronofield。milli_of_day)A.,一个2。appendvalue(chronofield.milli_of_day N,N)1 appendvalue(chronofield。nano_of_second)N,N 2,N appendvalue(chronofield.nano_of_second,N)1 appendvalue(chronofield。nano_of_day)N,N 2,N appendvalue(chronofield.nano_of_day,N)
带ID:图案字母输出ZoneId
。
模式计数等效生成器方法------- ----- --------------------------2 appendzoneid() VVZ 1 appendzonetext(文本风格,短)ZZ 2 appendzonetext(文本风格,短)zzz 3 appendzonetext(文本风格,短)4 appendzonetext zzzz(文本风格,全)
带偏移:图案字母输出ZoneOffset
。
模式计数等效生成器方法------- ----- --------------------------1 appendlocalizedoffsetprefixed(文本风格,短);哦哦哦4 appendlocalizedoffsetprefixed(文本风格,全);x 1 appendoffset(”+ HHMM”、“Z”)XX 2 appendoffset(”+ HHMM”、“Z”)3 appendoffset XXX(“+ HH:MM”、“Z”)4 appendoffset XXXX(“+ hhmmss”、“Z”)xxxxx 5 appendoffset(”+ HH:MM:SS”,“Z”)x 1 appendoffset(”+ HHMM”、“00”)XX 2 appendoffset(”+ HHMM”、“0000”)3 appendoffset XXX(“+ HH:MM”、“+00:00”)4 appendoffset XXXX(“+ hhmmss”、“0000”)xxxxx 5 appendoffset(”+ HH:MM:SS”、“+00:00”)Z 1 appendoffset(”+ HHMM”、“0000”)ZZ 2 appendoffset(”+ HHMM”、“0000”)zzz 3 appendoffset(”+ HHMM”、“0000”)4 appendlocalizedoffset zzzz(文本风格,全);zzzzz 5 appendoffset(”+ HH:MM:SS”,“Z”)
改性剂:图案字母修改剩余的模式:
模式计数等效生成器方法------- ----- --------------------------[ 1 optionalstart()1 optionalend() ]P。P 1 .. padnext(N)
未指定上面的字母的任何序列,未识别的字母或保留字符将抛出一个异常。未来的版本可能会添加到模式集。建议使用单引号来直接输出要输出的所有字符,以确保未来的更改不会破坏您的应用程序。
注意,模式串相似,但不完全相同的,要SimpleDateFormat
。模式串也类似,但不完全相同,表明Unicode共同现场数据仓库定义(cldr / LDML)。图案字母“X”和“U”与Unicode CLDR / LDML对齐。相比之下,SimpleDateFormat
采用“U”上周的数字的一天。模式字母“Y”和“Y”解析年的两个数字和超过4个数字不同。模式字母“n”,“A”,“N”和“P”被添加。数类型将拒绝大数。
pattern
-模式的添加,不为空
IllegalArgumentException
-如果模式是无效的
public DateTimeFormatterBuilder padNext(int padWidth)
此填充将垫到一个固定的宽度使用空格。
在格式化过程中,装饰元素将被输出,然后填充到指定的宽度。如果超过了焊盘宽度,则将在格式设置过程中引发异常。
在解析过程中,对填充和装饰元素进行了解析。如果解析是宽松的,那么垫宽被视为一个最大值。如果分析是不区分大小写的,则填充符符将匹配忽略的情况下。填料是解析的贪婪。因此,如果装饰元素从“垫”字符开始,它将不会被解析。
padWidth
-焊盘宽度,1或更高
IllegalArgumentException
如果垫宽度太小
public DateTimeFormatterBuilder padNext(int padWidth, char padChar)
此填充用于填充比零填充的其他填充。零填充应使用appendvalue方法实现。
在格式化过程中,装饰元素将被输出,然后填充到指定的宽度。如果超过了焊盘宽度,则将在格式设置过程中引发异常。
在解析过程中,对填充和装饰元素进行了解析。如果解析是宽松的,那么垫宽被视为一个最大值。如果分析是不区分大小写的,则填充符符将匹配忽略的情况下。填料是解析的贪婪。因此,如果装饰元素从“垫”字符开始,它将不会被解析。
padWidth
-焊盘宽度,1或更高
padChar
-填充字符
IllegalArgumentException
如果垫宽度太小
public DateTimeFormatterBuilder optionalStart()
格式化的输出可以包括可选的部分,这可能是嵌套的。一个可选的部分开始调用这个方法,通过调用optionalEnd()
或结束构建过程结束。
在可选部分中的所有元素都被视为可选的。在格式化的部分只输出数据是否可在TemporalAccessor
节中的所有元素。在解析过程中,整个部分可能从已解析的字符串中丢失。
例如,考虑一个生成器设置builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2)
。可选的部分在生成器结束时自动结束。在格式化过程中,只会输出,如果它的值可以从日期时间获得。在解析过程中,输入将成功解析是否存在或不存在。
public DateTimeFormatterBuilder optionalEnd()
格式化的输出可以包括可选的部分,这可能是嵌套的。一个可选的部分开始通过调用optionalStart()
结束使用这种方法(或在生成器结束)。
调用此方法没有以前称为optionalStart
将抛出一个异常。调用此方法后立即打电话optionalStart
没有影响格式化程序非结束(空)可选部分。
在可选部分中的所有元素都被视为可选的。在格式化的部分只输出数据是否可在TemporalAccessor
节中的所有元素。在解析过程中,整个部分可能从已解析的字符串中丢失。
例如,考虑一个生成器设置builder.appendValue(HOUR_OF_DAY,2).optionalStart().appendValue(MINUTE_OF_HOUR,2).optionalEnd()
。在格式化过程中,只会输出,如果它的值可以从日期时间获得。在解析过程中,输入将成功解析是否存在或不存在。
IllegalStateException
-如果没有前一个调用
optionalStart
public DateTimeFormatter toFormatter()
DateTimeFormatter
。
这将创建一个与default FORMAT locale格式化程序。号码将印制和使用标准的decimalstyle解析。解析器的风格将SMART
。
调用此方法将通过反复调用optionalEnd()
在创建格式化程序结束任何打开的可选部分。
这建设者仍然可以使用后,如果需要创建格式化程序,虽然国家可能已改变了的电话optionalEnd
。
public DateTimeFormatter toFormatter(Locale locale)
DateTimeFormatter
。
这将创建一个具有指定区域设置格式化程序。号码将印制和使用标准的decimalstyle解析。解析器的风格将SMART
。
调用此方法将通过反复调用optionalEnd()
在创建格式化程序结束任何打开的可选部分。
这建设者仍然可以使用后,如果需要创建格式化程序,虽然国家可能已改变了的电话optionalEnd
。
locale
-现场使用的格式,不为空
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.