Formatter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
printf 样式格式字符串的解释器。
[Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)]
public sealed class Formatter : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable, Java.IO.IFlushable
[<Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)>]
type Formatter = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IFlushable
- 继承
- 属性
- 实现
注解
printf 样式格式字符串的解释器。 此类支持布局对齐和对齐方式、数字、字符串和日期/时间数据的常见格式以及特定于区域设置的输出。 常见的 Java 类型,例如 byte, java.math.BigDecimal BigDecimal并且 Calendar 受支持。 通过 Formattable 界面提供任意用户类型的有限格式设置自定义。
格式化程序不一定安全进行多线程访问。 线程安全是可选的,是此类中方法的用户的责任。
Java 语言的格式打印受到 C 的 printf启发。 尽管格式字符串类似于 C,但已进行一些自定义以容纳 Java 语言并利用其一些功能。 此外,Java 格式比 C 更严格;例如,如果转换与标志不兼容,则会引发异常。 在 C 不可应用标志中,将无提示忽略。 因此,格式字符串旨在可由 C 程序员识别,但不一定与 C 中的编程人员完全兼容。
预期使用情况的示例:
<blockquote>
StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d c b a"
// Optional locale as the first argument can be used to get
// locale-specific formatting of numbers. The precision and width can be
// given to round and align the value.
formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
// -> "e = +2,7183"
// The '(' numeric flag may be used to format negative numbers with
// parentheses rather than a minus sign. Group separators are
// automatically inserted.
formatter.format("Amount gained or lost since last statement: $ %(,.2f",
balanceDelta);
// -> "Amount gained or lost since last statement: $ (6,217.58)"
</blockquote>
常见格式请求的便利方法存在,如以下调用所示:
<blockquote>
// Writes a formatted string to System.out.
System.out.format("Local time: %tT", Calendar.getInstance());
// -> "Local time: 13:34:18"
// Writes formatted output to System.err.
System.err.printf("Unable to open file '%1$s': %2$s",
fileName, exception.getMessage());
// -> "Unable to open file 'food': No such file or directory"
</blockquote>
与 C 一 sprintf(3)样,可以使用静态方法 String#format(String,Object...) String.format设置字符串的格式:
<blockquote>
// Format a string containing a date.
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;
Calendar c = new GregorianCalendar(1995, MAY, 23);
String s = String.format("Duke's Birthday: %1$tb %1$te, %1$tY", c);
// -> s == "Duke's Birthday: May 23, 1995"
</blockquote>
<h3>“org”>Organization</h3>
此规范分为两个部分。 第一部分“摘要”介绍了基本格式设置概念。 本部分适用于想要快速入门且熟悉其他编程语言格式打印的用户。 第二部分“详细信息”介绍了具体的实现详细信息。 它适用于需要更精确的格式设置行为规范的用户。
<h3>“summary”>Summary</h3>
本部分旨在简要概述格式设置概念。 有关精确的行为详细信息,请参阅“详细信息”部分。
<h4>“syntax”>Format String Syntax</h4>
生成格式化输出的每个方法都需要格式 字符串 和 参数列表。 格式字符串是一个 String 可能包含固定文本和一个或多个嵌入 格式说明符的字符串。 请考虑以下示例:
<blockquote>
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
</blockquote>
此格式字符串是该方法的第一个参数 format 。 它包含三个格式说明符“%1$tm”、“”%1$te和“”%1$tY,这些说明符指示应如何处理参数,以及应在文本中插入参数的位置。 格式字符串的其余部分是固定文本,包括 "Dukes Birthday: " 任何其他空格或标点符号。
参数列表包含格式字符串之后传递给方法的所有参数。 在上面的示例中,参数列表的大小为一,由对象c组成java.util.Calendar Calendar。
<ul>
<li> 常规、字符和数值类型的格式说明符具有以下语法:
<blockquote>
%[argument_index$][flags][width][.precision]conversion
</blockquote>
可选 argument_index 是一个十进制整数,指示参数在参数列表中的位置。 第一个参数由“”1$引用,第二个参数由“2$”等引用。
可选 标志 是一组修改输出格式的字符。 有效标志集取决于转换。
可选 宽度 是一个正十进制整数,指示要写入输出的最小字符数。
可选 精度 是一个非负十进制整数,通常用于限制字符数。 特定行为取决于转换。
所需的 转换 是一个字符,指示应如何设置参数的格式。 给定参数的有效转换集取决于参数的数据类型。
<li> 用于表示日期和时间的类型的格式说明符具有以下语法:
<blockquote>
%[argument_index$][flags][width]conversion
</blockquote>
可选 argument_index、 标志 和 宽度 定义为上面。
所需的 转换 是两个字符序列。 第一个字符为 't' 或 'T'。 第二个字符指示要使用的格式。 这些字符与 GNU date 和 POSIX strftime(3c)定义的字符相似,但并不完全相同。
<li> 不对应于参数的格式说明符具有以下语法:
<blockquote>
%[flags][width]conversion
</blockquote>
可选 标志 和 宽度 定义为上面。
所需的 转换 是一个字符,指示要插入到输出中的内容。
</ul>
<h4> 转换 </h4>
转换分为以下类别:
<老>
<li><b>General</b> - 可应用于任何参数类型
<li>b Character/b> - 可以应用于表示 Unicode 字符<的基本类型:char、、Character、byte、Byte、和shortShort。>< 此转换还可能应用于类型int以及Integer返回<true li><b>Numeric</b 时Character#isValidCodePoint>
<老>
<li><b>整型</b> - 可应用于 Java 整型类型:byte、、、ShortByteshort、 int Integer、、long以及 Longjava.math.BigInteger BigInteger (但不能charCharacter或)
<li><b>浮点</b> - 可应用于 Java 浮点类型:float、、Float、double和 Doublejava.math.BigDecimal BigDecimal</ol>
<li><b>日期/时间</b> - 可应用于能够对日期或时间进行编码的 Java 类型:long、Long、Calendar和 Date<TemporalAccessor TemporalAccessorli><b>百分比</b> - 生成文本 '%' ('\u0025')
<li><b>行分隔符</b> - 生成特定于平台的行分隔符
</老>
对于“常规”、“字符”、“数字”、“整型”和“日期/时间”转换,除非另有指定,否则参数 arg 为null,则结果为“”。null
下表汇总了支持的转换。 由大写字符(即'B',、'H'、'S'、'C'、'X''G''E'、和'A''T')表示的转换与对应小写转换字符的转换相同,但结果根据占位java.util.Locale Locale规则转换为大写。 如果未指定显式区域设置,则使用实例构造或作为方法调用 java.util.Locale.Category#FORMAT default locale 的参数。
<table class=“striped”><caption style=“display:none”>genConv</caption><thead><tr><th scope=“col” style=“vertical-align:bottom”> Conversion <th scope=“col” style=“vertical-align:bottom> ” Argument Category <th scope=“col” style=“vertical-align:bottom”> Description </thead><tbody><tr><th scope=“row” style=“vertical-align:top”>'b', 'B'<td style=“vertical-align:top”> 常规 <td> 如果参数 arg 为 null,则结果为“false”。 如果 arg 为 or boolean Boolean,则结果为返回的 String#valueOf(boolean) String.valueOf(arg)字符串。 否则,结果为“true”。
<tr><th scope=“row” style=“vertical-align:top”>'h', 'H'<td style=“vertical-align:top”> general <td> The result is obtained by invoking Integer.toHexString(arg.hashCode()).
<tr><th scope=“row” style=“vertical-align:top”>'s', 'S'<td style=“vertical-align:top”> general <td> If arg implements Formattable, then Formattable#formatTo arg.formatTo is invoked. 否则,通过调用 arg.toString()来获取结果。
<tr><th scope=“row” style=“vertical-align:top”>'c', 'C'<td style=“vertical-align:top”> character <td> The result is a Unicode character
<tr><th scope=“row” style=“vertical-align:top”>'d'<td style=“vertical-align:top”> integral <td> The result is formatd as a decimal integer
<tr><th scope=“row” style=“vertical-align:top”>'o'<td style=“vertical-align:top”> integral <td The result is formatd> as an octal integer
<tr><th scope=“row” style=“vertical-align:top”>'x', 'X'<td style=“vertical-align:top”> integral <td> The result is formatd as a hexadecimal integer
<tr><th scope=“row” style=“vertical-align:top”>'e', 'E'<td style=“vertical-align:top”> floating point <td> The result is formatd as a decimal number in computerized scientific notation
<tr><th scope=“row” style=“vertical-align:top”>'f'<td style=“vertical-align:top”> floating point <td> The result is formatd as a decimal number
<tr><th scope=“row” style=“vertical-align:top”>'g', 'G'<td style=“vertical-align:top”> 浮点 <td> 使用计算机化科学表示法或十进制格式设置结果的格式,具体取决于舍入后的精度和值。
<tr><th scope=“row” style=“vertical-align:top”>'a', 'A'<td style=“vertical-align:top”> 浮点 <td> 。结果的格式为具有十六进制浮点数和指数的十六进制浮点数。 尽管后者处于浮点参数类别中,但类型不支持<>BigDecimal此转换<>。
<tr><th scope=“row” style=“vertical-align:top”>'t', 'T'<td style=“vertical-align:top”> date/time td> Prefix for date and time <conversion characters. 请参阅日期/时间转换。
<tr><th scope=“row” style=“vertical-align:top”>'%'<td style=“vertical-align:top”> percent <td> The result is a literal '%' ('\u0025')
<tr><th scope=“row” style=“vertical-align:top”>'n'<td style=“vertical-align:top”>行分隔符 td> 结果为特定于平台的行分隔符<
</tbody></table>
未显式定义为转换的任何字符都是非法的,并保留用于将来的扩展。
<h4>“dt”>Date/Time Conversions</h4>
为转换'T'定义't'以下日期和时间转换后缀字符。 这些类型与 GNU date 和 POSIX strftime(3c)定义的类型相似,但并不完全相同。 提供了其他转换类型来访问特定于 Java 的功能(例如 'L' ,秒内的毫秒)。
以下转换字符用于格式设置时间:
<table class=“striped”>caption style=“display:none”>time</caption><tbody><tr><th scope=“row” style=“vertical-align:top”><'H'td> Hour of the day for the 24-hour clock, formated as two digits with a leading zero as ed as leading zero00 - 23.<
<tr><th scope=“row” style=“vertical-align:top”>'I'<td> Hour for the 12-hour clock, formatd hour as two digits with a leading zero as leading zero as necessary, i. 01 - 12
<tr><th scope=“row” style=“vertical-align:top”>'k'<td> Hour of the day for the 24-hour clock, e. 0 - 23
<tr><th scope=“row” style=“vertical-align:top”>'l'<td> Hour for the 12-hour, e. 1 - 12
<tr><th scope=“row” style=“vertical-align:top”>'M'<td> Minute within the hour formatd Minute as two digits with a leading zero as leading zero as necessary, e. 00 - 59
<tr><th scope=“row” style=“vertical-align:top”>'S'<td> Seconds within the minute, formatd Seconds as two digits with a leading zero as leading zero as requiredy, 即 00 - 60 (“60” is a special value to support leap seconds) .
<tr><th scope=“row” style=“vertical-align:top”>'L'<td> 毫秒,第二个格式设置为三位数字,并根据需要使用前导零,即。 000 - 999
<tr><th scope=“row” style=“vertical-align:top”>'N'<td> Nanosecond within the second, formatd as 9 digits with leading zeros as leading zeros as necessary, e. 000000000 - 999999999
<tr><th scope=“row” style=“vertical-align:top”>'p'<td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning 或 afternoon marker in lower case, 例如“”am 或“pm”。 使用转换前缀 'T' 会强制此输出大写。
<tr><th scope=“row” style=“vertical-align:top”>'z'<td>RFC 822 style numeric time zone offset from GMT, 例如. -0800 此值将根据需要调整夏令时。 对于long,LongDate使用的时区是此 Java 虚拟机实例的 TimeZone#getDefault() 默认时区。
<tr><th scope=“row” style=“vertical-align:top”>'Z'<td> A string, 代表时区的缩写。 此值将根据需要调整夏令时。 对于long,LongDate使用的时区是此 Java 虚拟机实例的 TimeZone#getDefault() 默认时区。 Formatter 的区域设置将取代参数的区域设置(如果有)。
<tr><th scope=“row” style=“vertical-align:top”>'s'<td> Seconds 自 1970 00:00:00 年 1 月 1 日 UTC 开始的 epoch 开始,即Long.MIN_VALUE/1000到 .Long.MAX_VALUE/1000
<tr><th scope=“row” style=“vertical-align:top”>'Q'<td> 毫秒,从 1970 00:00:00 年 1 月 1 日 UTC 开始的纪元开始,即Long.MIN_VALUE到 .Long.MAX_VALUE
</tbody></table>
以下转换字符用于设置日期的格式:
<table class=“striped”><caption style=“display:none”>date</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'B'<td> Locale-specific java.text.DateFormatSymbols#getMonths full month name, 例如. "January""February"
<tr><th scope=“row” style=“vertical-align:top”>'b'<td> Locale-specific java.text.DateFormatSymbols#getShortMonths abbreviated month name, 例如. "Jan""Feb"
<tr><th scope=“row” style=“vertical-align:top”>'h'<td> Same as 'b'.
<tr><th scope=“row” style=“vertical-align:top”>'A'<td> Locale-specific full name of the java.text.DateFormatSymbols#getWeekdays day of the week, 例如"Sunday",<"Monday"tr><th scope=“row” style=“vertical-align:top”>'a'<td> Locale-specific short name of the java.text.DateFormatSymbols#getShortWeekdays day of the week, e. "Sun""Mon"<tr><th scope=“row” style=“vertical-align:top”'C'<>td> Four-digit year 除以100,格式设置为两位数字,并根据需要设置前导零的格式,即 00 - 99tr th scope=“row” style=“vertical-align:top”><'Y'td> Year,格式设置为至少四位数字,并根据需要采用前导零,例如0092等于92公历的 CE。><<
<tr><th scope=“row” style=“vertical-align:top”>'y'<td> Year 的最后两位数字,根据需要设置前导零的格式,即。 00 - 99
<tr><th scope=“row” style=“vertical-align:top”>'j'<td> Day of year, formatd as three digits with leading zeros with leading zero as necessary, 例如 001 - 366 ,for Gregorian calendar.
<tr><th scope=“row” style=“vertical-align:top”>'m'<td> Month, formatd as two digits with leading zeros as leading zeros as necessary, 即. 01 - 13
<tr><th scope=“row” style=“vertical-align:top”><'d'td> Day of month, formatd as two digits with leading zeros as necessary, i. 01 - 31<tr><th scope=“row” style=“vertical-align:top”'e'<>td> Day of month, formatted as two digits, e.e. 1 - 31
</tbody></table>
以下转换字符用于设置常见日期/时间组合的格式。
<table class=“striped”><caption style=“display:none”>composites</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'R'td> Time formatted for the 24-hour clock "%tH:%tM"<as tr><th scope=“row” style=“vertical-align:top”'T'<>td> Time formatted for the 24 hour clock as."%tH:%tM:%tS"
<tr><th scope=“row” style=“vertical-align:top”>'r'<td> Time formatted for the 12-hour clock as."%tI:%tM:%tS %Tp" 上午或下午标记('%Tp')的位置可能依赖于区域设置。
<tr><th scope=“row” style=“vertical-align:top”>'D'<td> Date formatted as "%tm/%td/%ty".
<tr><th scope=“row” style=“vertical-align:top”>'F'<td>ISO 8601 complete date formatd as ."%tY-%tm-%td"
<tr><th scope=“row” style=“vertical-align:top”>'c'<td> Date and time formatted as "%ta %tb %td %tT %tZ %tY", "Sun Jul 20 16:17:00 EDT 1969"例如.
</tbody></table>
未显式定义为日期/时间转换后缀的任何字符都是非法的,并保留用于将来的扩展。
<h4> 标志 </h4>
下表汇总了支持的标志。 y 表示指示的参数类型支持该标志。
<table class=“striped”><caption style=“display:none”>genConv</caption><thead><tr><th scope=“col” style=“vertical-align:bottom”> Flag <th scope=“col” style=“vertical-align:bottom”> General <th scope=“col” style=“vertical-align:bottom”> Character <th scope=“col” style=“vertical-align:bottom”> Integral <th scope=“col” style=“vertical-align:bottom”> Floating Point <th scope=“col” style=”vertical-align:bottom“> Date/Time <th scope=”col“ style=”vertical-align:bottom“> Description </thead><tbody><tr><th scope=”row“ '-' <td style=”text-align:center;> vertical-align:top“> y <td style=”text-align:center; vertical-align:top“> y <td style=”text-align:center; vertical-align:top“> y <td style=”text-align:center; vertical-align:top“> y <td style=”text-align:center;垂直对齐:top“> y <td> 结果将为左对齐。
<tr><th scope=“row”> '#' <td style=“text-align:center; vertical-align:top”> y<sup 1</sup<>>td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> y<sup 3</sup<>>td style=“text-align:center; vertical-align:top”> y <td style=“text-align:center; vertical-align:top”> - <td> 结果应使用依赖转换的备用窗体
<tr><th scope=“row”> '+' <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top;> y<sup 4</sup>><td style=”text-align:center; vertical-align:><center; vertical-align:top“> - <td> 结果将始终包含一个符号
<tr><th scope=“row”> ' ' <td style=“text-align:center;vertical-align:top“> - <td style=”text-align:center; vertical-align:top“> - <td style=”text-align:center; vertical-align:top“> y<sup 4</sup>><td style=”text-align:center; vertical-align><:center; vertical-align:top“> - <td> 结果将包含正值的前导空间
<tr><th scope=“row”> '0' <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> y <td style=“text-align:center; vertical-align:top> ; y <td style=”text-align:center; vertical-align:top“> - <td> 结果将为零填充
<tr><th scope=“row”> ', <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> y sup 2</sup><>td style=“text-align:center; vertical-align:top;> y<<sup>5</sup><td style=”text-align:center; vertical-align:top“> - <td>结果将包括特定于区域设置的 java.text.DecimalFormatSymbols#getGroupingSeparator 分组分隔符<tr><th scope=“row” '(' <td style=“text-align:center;> vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top; vertical-align:top”> y sup 4</sup>><td style=“text-align:center; vertical-align:top”> y<<sup>5</sup><tdstyle=“text-align:center”> - <td> 结果将负数括在括号中
</tbody></table>
<sup>1</sup> 取决于的定义 Formattable。
<sup>2</sup> 仅用于 'd' 转换。
<sup>3</sup> For 'o', 'x'and 'X' conversions only.
<sup>4</sup> For'd'、'o'、 'x'和'X'转换应用于java.math.BigInteger BigIntegerbyte'd'、、shortByte、Short、Integerint、、 和 Long。 long
<sup>5</sup> For'e'、、 'E''f''g'和 'G' conversions only.
未显式定义为标志的任何字符都是非法的,并保留为将来的扩展。
<h4> 宽度 </h4>
宽度是要写入输出的最小字符数。 对于线条分隔符转换,宽度不适用;如果提供异常,将引发异常。
<h4> 精度 </h4>
对于常规参数类型,精度是要写入输出的最大字符数。
对于浮点转换'a','E''A''e'精度'f'是弧度点后的位数。 如果转换是 'g' 或 'G',则精度是舍入后生成的数量级中的数字总数。
对于字符、整型和日期/时间参数类型和百分比和行分隔符转换,精度不适用;如果提供精度,将引发异常。
<h4> 参数索引 </h4>
参数索引是一个十进制整数,指示参数在参数列表中的位置。 第一个参数由“”1$引用,第二个参数由“2$”等引用。
按位置引用参数的另一种方法是使用 '<' ('\u003c') 标志,这会导致重新使用上一格式说明符的参数。 例如,以下两个语句将生成相同的字符串:
<blockquote>
Calendar c = ...;
String s1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
String s2 = String.format("Duke's Birthday: %1$tm %<te,%<tY", c);
</blockquote>
<hr><h3>“detail”>Details</h3>
本部分旨在提供格式设置的行为详细信息,包括条件和异常、支持的数据类型、本地化以及标志、转换和数据类型之间的交互。 有关格式设置概念的概述,请参阅摘要
未显式定义为转换、日期/时间转换后缀或标志的任何字符都是非法的,并且保留为将来的扩展。 在格式字符串中使用此类字符将导致 UnknownFormatConversionException 引发或 UnknownFormatFlagsException 引发。
如果格式说明符包含具有无效值的宽度或精度,或者不受支持的宽度或精度,则将 IllegalFormatWidthException 引发或 IllegalFormatPrecisionException 分别引发。
如果格式说明符包含不适用于相应参数的转换字符,则将引发一个 IllegalFormatConversionException 转换字符。
所有指定的异常都可以由任何format方法以及任何format便利方法Formatter(如String#format(String,Object...) String.format和java.io.PrintStream#printf(String,Object...) PrintStream.printf)引发。
对于“常规”、“字符”、“数字”、“整型”和“日期/时间”转换,除非另有指定,否则参数 arg 为null,则结果为“”。null
由大写字符(即'B',、'H'、'S'、'C'、'X''G''E'、和'A''T')表示的转换与对应小写转换字符的转换相同,但结果根据占位java.util.Locale Locale规则转换为大写。 如果未指定显式区域设置,则使用实例构造或作为方法调用 java.util.Locale.Category#FORMAT default locale 的参数。
<h4>“dgen”>General</h4>
以下常规转换可以应用于任何参数类型:
<table class=“striped”><caption style=“display:none”>dgConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'b'td style=“vertical-align:top”>'\u0062'<td> 生成true “” 或“false” 作为返回者。Boolean#toString(boolean)
如果参数为 null,则结果为“false”。 如果参数为或booleanBoolean,则结果为返回的String#valueOf(boolean) String.valueOf()字符串。 否则,结果为“true”。
如果给定了 '#' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”><'B'td style=“vertical-align:top”>'\u0042'<td> The upper-case variant of 'b'.
<tr><th scope=“row” style=“vertical-align:top”>'h'<td style=“vertical-align:top”>'\u0068'<td> 生成表示对象的哈希代码值的字符串。
通过调用 Integer.toHexString(arg.hashCode())获取结果。
如果给定了 '#' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”><'H'td style=“vertical-align:top”>'\u0048'<td> The upper-case variant of 'h'.
<tr><th scope=“row” style=“vertical-align:top”>'s'<td style=“vertical-align:top”>'\u0073'<td> 生成字符串。
如果参数实现 Formattable,则调用其 Formattable#formatTo formatTo 方法。 否则,通过调用参数 toString() 的方法获取结果。
如果给定了 '#' 标志,并且参数不是一个 Formattable ,则将引发一个 FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”><'S'td style=“vertical-align:top”>'\u0053'<td> The upper-case variant of 's'.
</tbody></table>
以下“dFlags”>标志适用于常规转换:
<table class=“striped”><caption style=“display:none”>dFlags</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'-'<td style=“vertical-align:top”>'\u002d'<td> Left 使输出对齐。 将根据需要在转换值末尾添加空格('\u0020'),以填充字段的最小宽度。 如果未提供宽度,则会引发一个 MissingFormatWidthException 。 如果未提供此标志,则输出将右对齐。
<tr><th scope=“row” style=“vertical-align:top”>'#'<td style=“vertical-align:top”>'\u0023'<td> Requires the output use an alternate form. 表单的定义由转换指定。
</tbody></table>
“genWidth”>宽度是要写入输出的最小字符数。 如果转换后的值的长度小于宽度,则输出将按 ' ' ('\u0020') 填充,直到总字符数等于宽度。 默认情况下,填充位于左侧。 如果指定了 '-' 标志,则填充将位于右侧。 如果未指定宽度,则没有最小值。
精度是要写入输出的最大字符数。 精度在宽度之前应用,因此即使宽度大于精度,输出也会截断 precision 为字符。 如果未指定精度,则字符数没有显式限制。
<h4>“dchar”>Character</h4>
此转换可以应用于 char 和 Character。 它还可能应用于类型byte、Byteshort和ShortIntegerint返回时间。Character#isValidCodePoint true 如果返回 false ,则会引发一个 IllegalFormatCodePointException 。
<table class=“striped”><caption style=“display:none”>charConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'c'<td style=“vertical-align:top”>'\u0063'<td> Formats the argument as a Unicode character as described in Unicode Character Representation. 如果参数表示补充字符,则可能是多个 16 位 char 。
如果给定了 '#' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”><'C'td style=“vertical-align:top”>'\u0043'<td> The upper-case variant of 'c'.
</tbody></table>
'-'为常规转换定义的标志适用。 如果给定了 '#' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
宽度定义为常规转换。
精度不适用。 如果指定精度,则将引发一个 IllegalFormatPrecisionException 。
<h4>“dnum”>Numeric</h4>
数值转换分为以下类别:
<老>
<li>b Byte、Short、Integer 和 Long</b><li b>BigInteger</b><li<>b>Float and Double</b li<><>b>BigDecimal</b><></ol><>
将根据以下算法设置数字类型的格式:
<b>“L10nAlgorithm”> Number Localization Algorithm</b>
为整数部分、小数部分和指数(适合数据类型)获取数字后,将应用以下转换:
<老>
<li> 字符串中每个数字字符都替换为相对于当前区域设置的 java.text.DecimalFormatSymbols#getZeroDigit() 零位z; 的特定于区域设置的数字;即 d - '0' + z.
<li> 如果存在小数分隔符,则替换特定于区域设置的 java.text.DecimalFormatSymbols#getDecimalSeparator 十进制分隔符。
<li> 如果 ',' 给定了 ('\u002c') “L10nGroup”>标志,则通过扫描字符串的整数部分(从最重要到最重要的数字),并按区域设置的 java.text.DecimalFormat#getGroupingSize#getGroupingSize() 分组大小定义的间隔插入特定于区域设置的 java.text.DecimalFormat#getGroupingSize() 分隔符来插入该字符串的整数部分。
<li> 如果指定了标志,则在符号字符(如果有)之后插入特定于区域设置的 '0' java.text.DecimalFormatSymbols#getZeroDigit() 零位数字(如果有),直到字符串的长度等于请求的字段宽度。
<li> 如果值为负值并且 '(' 指定了标志,则前面追加一个 '(' ('\u0028')并追加一个 ')' ('\u0029')。
<li> 如果值为负值(或浮点负零),则 '(' 不指定标志,则前面追加一个 '-' ('\u002d')。
<li> 如果 '+' 给定标志并且值为正或零(或浮点正零),则将前面追加一个 '+' ('\u002b') 。
</老>
如果值为 NaN 或正无穷大,则文本字符串“NaN”或“Infinity”将分别输出。 如果值为负无穷大,则如果 '(' 给定标志,则输出将为“(Infinity)”,否则输出将为“-Infinity”。 这些值未本地化。
“dnint”><b> 字节、短、整数和长 </b>
以下转换可以应用于byte、Byte、short、Short和 int Integer和long。Long
<table class=“striped”><caption style=“display:none”>IntConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'d'<td style=“vertical-align:top”>'\u0064'<td> Formats the argument as decimal integer. 应用本地化算法。
如果给定 '0' 标志且值为负值,则零填充将在符号后发生。
如果给出标志 '#' ,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”>'o'<td style=“vertical-align:top”>'\u006f'<td> Formats the argument as an integer in base 8. 未应用本地化。
如果 x 为负值,则结果将是通过将 2<sup>n</sup> 添加到值生成的无符号值,其中 n 类型中的位数由 Byte#SIZE Byte、Short#SIZE Short、Integer#SIZE Integer 或 Long#SIZE Long 类所返回 SIZE 。
如果给出标志 '#' ,输出将始终以弧度指示器 '0'开头。
'0'如果提供了标志,则输出将填充前导零到字段宽度,然后指示任何符号。
如果 '(', '+'则为“nbsp; “,或 ',' 指定标志,然后引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”>'x'<td style=“vertical-align:top”>'\u0078'<td> Formats the argument as an integer in base 16en. 未应用本地化。
如果 x 为负值,则结果将是通过将 2<sup>n</sup> 添加到值生成的无符号值,其中 n 类型中的位数由 Byte#SIZE Byte、Short#SIZE Short、Integer#SIZE Integer 或 Long#SIZE Long 类所返回 SIZE 。
如果给出标志 '#' ,输出将始终以弧度指示器 "0x"开头。
如果给出标志 '0' ,则输出将填充到字段宽度,在弧度指示器或符号之后使用前导零(如果存在)。
如果 '('提供 、 ' '、 '+'或 ',' 标志,则会引发一个 FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”><'X'td style=“vertical-align:top”>'\u0058'<td> The upper-case variant of 'x'. 表示数字的整个字符串将转换为 String#toUpperCase 大写,包括'x'(如果有)和所有十六进制数字'f' - 'a'()。'\u0061' - '\u0066'
</tbody></table>
如果转换是'o','x'或'X'同时指定和'0'标记'#',则结果将包含弧度指示器('0'八进制和"0X""0x"十六进制),一些零(基于宽度)和值。
'-'如果未指定标志,则空格填充将在符号之前发生。
以下“intFlags”>标志适用于数值整型转换:
<table class=“striped”><caption style=“display:none”>intFlags</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'+'<td style=“vertical-align:top”>'\u002b'<td> 要求输出包含所有正数的正号。 如果未提供此标志,则只有负值将包含一个符号。
'+'如果同时指定了标志,' '则会引发一个IllegalFormatFlagsException标志。
<tr><th scope=“row” style=“vertical-align:top”><' 'td style=“vertical-align:top”>'\u0020'<td> 要求输出包含非负值的单个额外空间()。'\u0020'
'+'如果同时指定了标志,' '则会引发一个IllegalFormatFlagsException标志。
<tr><th scope=“row” style=“vertical-align:top”>'0'<td style=“vertical-align:top”>'\u0030'<td> 要求使用前导 java.text.DecimalFormatSymbols#getZeroDigit 零填充输出到任何符号或弧度指示器后面的最小字段宽度,但转换 NaN 或无穷大时除外。 如果未提供宽度,则会引发一个 MissingFormatWidthException 。
'-'如果同时指定了标志,'0'则会引发一个IllegalFormatFlagsException标志。
<tr><th scope=“row” style=“vertical-align:top”>','<td style=“vertical-align:top”>'\u002c'<td> 要求输出包含特定于区域设置的 java.text.DecimalFormatSymbols#getGroupingSeparator 组分隔符,如本地化算法的“group”部分中所述。
<tr><th scope=“row” style=“vertical-align:top”>'('<td style=“vertical-align:top”><'\u0028'td> Requires the output to prepend a '(' ('\u0028') and append a ')' ('\u0029') to negative values.
</tbody></table>
如果未提供“intdFlags”>标志,则默认格式如下所示:
<ul>
<li> 输出在 li> 负数内width<右对齐,以 a '-' ('\u002d') 开头
<li> 正数和零不包括符号或额外的前导空格
<不包括任何> 分组分隔符
</ul>
“intWidth”>宽度是要写入输出的最小字符数。 这包括任何符号、数字、分组分隔符、弧度指示器和括号。 如果转换后的值的长度小于宽度,则输出将被空格('\u0020')填充,直到字符总数等于宽度。 默认情况下,填充位于左侧。 如果 '-' 提供了标志,则填充将位于右侧。 如果未指定宽度,则没有最小值。
精度不适用。 如果指定精度,则将引发一个 IllegalFormatPrecisionException 。
“dnbint”><b> BigInteger </b>
以下转换可以应用于 java.math.BigInteger。
<table class=“striped”><caption style=“display:none”>bIntConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'d'<td style=“vertical-align:top”>'\u0064'<td> 要求将输出格式化为十进制整数。 应用本地化算法。
如果给定FormatFlagsConversionMismatchException了'#'标志,则会引发该标志。
<tr><th scope=“row” style=“vertical-align:top”>'o'<td style=“vertical-align:top”>'\u006f'<td> 要求将输出格式化为基本 8 中的整数。 未应用本地化。
如果 x 为负值,则结果将为以 ('\u002d') 开头'-'的带符号值。 此类型允许有符号输出,因为与基元类型不同,在不使用显式数据类型大小的情况下,无法创建无符号等效项。
如果 x 为正数或零,并且 '+' 给定了标志,则结果将以 '+' ('\u002b') 开头。
'#'如果提供标志,则输出将始终以'0'前缀开头。
'0'如果提供了标志,则输出将填充前导零到字段宽度,然后指示任何符号。
如果给出标志 ',' ,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”>'x'<td style=“vertical-align:top”>'\u0078'<td> 要求将输出格式化为十六分之一的整数。 未应用本地化。
如果 x 为负值,则结果将为以 ('\u002d') 开头'-'的带符号值。 此类型允许有符号输出,因为与基元类型不同,在不使用显式数据类型大小的情况下,无法创建无符号等效项。
如果 x 为正数或零,并且 '+' 给定了标志,则结果将以 '+' ('\u002b') 开头。
如果给出标志 '#' ,输出将始终以弧度指示器 "0x"开头。
如果给出标志 '0' ,则输出将填充到字段宽度,在弧度指示器或符号之后使用前导零(如果存在)。
如果给出标志 ',' ,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”><'X'td style=“vertical-align:top”>'\u0058'<td> The upper-case variant of 'x'. 表示数字的整个字符串将转换为 String#toUpperCase 大写,包括'x'(如果有)和所有十六进制数字'f' - 'a'()。'\u0061' - '\u0066'
</tbody></table>
如果转换为、或同时提供标志,'#''0'则结果将包含基本指示器('0'对于八进制和"0x""0X"十六进制)、一些零(基于宽度)和值。'X' 'x''o'
如果给定 '0' 标志且值为负值,则零填充将在符号后发生。
'-'如果未指定标志,则空格填充将在符号之前发生。
为字节、短、整数和 Long 定义的所有标志都适用。 如果未提供任何标志,则默认行为与 Byte、Short、Integer 和 Long 相同。
宽度的规范与为字节、短、整数和长定义相同。
精度不适用。 如果指定精度,则将引发一个 IllegalFormatPrecisionException 。
“dndec”><b> Float 和 Double</b>
以下转换可以应用于float和 Floatdouble Double。
<table class=“striped”><caption style=“display:none”>floatConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'e'td style=“vertical-align:top”>'\u0065'<td> 要求使用“科学”>计算机化科学表示法设置输出的格式。 应用本地化算法。
数量级 m 的格式取决于其值。
如果 m 为 NaN 或 infinite,则文本字符串“NaN”或“Infinity”将分别输出。 这些值未本地化。
如果 m 为正零或负零,则指数将为 "+00"。
否则,结果是一个字符串,表示参数的符号和数量级(绝对值)。 本地化算法中描述了符号的格式。 数量级 m 的格式取决于其值。
让 n 成为唯一整数,使 10<sup>n</sup <= m < 10<sup>> n+1</sup>;然后让一个数学上确切的 m 和 10<sup n</sup>> 的商,以便 1 <= a <'e'),后跟指数的符号,后跟 n 表示为小数整数, 由该方法Long#toString(long, int)生成,且填充为零,以包含至少两位数字。
m 部分或 a 部分的结果中的位数等于精度。 如果未指定精度,则默认值为 6。 如果精度小于由或Double#toString(double)分别返回Float#toString(float)的字符串中的小数点之后显示的位数,则使用 java.math.RoundingMode#HALF_UP向上舍入算法对值进行舍入。 否则,可以追加零以达到精度。 对于值的规范表示形式,请使用 Float#toString(float) 或 Double#toString(double) 根据需要使用。
如果指定了 ',' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”><'E'td style=“vertical-align:top”>'\u0045'<td> The upper-case variant of 'e'. 指数符号将是特定于大写区域设置的 java.text.DecimalFormatSymbols#getExponentSeparator 指数分隔符(例如 'E')。
<tr><th scope=“row” style=“vertical-align:top”>'g'<td style=“vertical-align:top”>'\u0067'<td> 要求以一般科学表示法设置输出的格式,如下所示。 应用本地化算法。
精度舍入后,生成的数量级 m 的格式取决于其值。
如果 m 大于或等于 10<sup-4</sup>>,但小于 10<sup 精度</sup>>,则以十进制格式表示。
如果 m 小于 10<sup-4</sup>> 或大于或等于 10<sup>精度</sup>,则在计算机化科学表示法中表示它。
m 中的有效数字总数等于精度。 如果未指定精度,则默认值为 6. 如果精度为 0,则需为 1。
'#'如果提供标志,则会引发一个FormatFlagsConversionMismatchException标志。
<tr><th scope=“row” style=“vertical-align:top”><'G'td style=“vertical-align:top”>'\u0047'<td> The upper-case variant of 'g'.
<tr><th scope=“row” style=“vertical-align:top”><'f'td style=“vertical-align:top”>'\u0066'<td> 要求使用“decimal”>decimal 格式设置输出的格式。 应用本地化算法。
结果是一个字符串,表示参数的符号和数量级(绝对值)。 本地化算法中描述了符号的格式。 数量级 m 的格式取决于其值。
如果 m NaN 或 infinite,则文本字符串“NaN”或“Infinity”将分别输出。 这些值未本地化。
数量级的格式为 m 的整数部分,没有前导零,后跟小数分隔符,后跟一个或多个表示 m 的小数部分的小数位数。
m 部分或 a 部分的结果中的位数等于精度。 如果未指定精度,则默认值为 6。 如果精度小于由或Double#toString(double)分别返回Float#toString(float)的字符串中的小数点之后显示的位数,则使用 java.math.RoundingMode#HALF_UP向上舍入算法对值进行舍入。 否则,可以追加零以达到精度。 对于值的规范表示形式,请使用 Float#toString(float) 或 Double#toString(double) 根据需要使用。
<tr><th scope=“row” style=“vertical-align:top”>'a'<td style=“vertical-align:top”>'\u0061'<td> 要求以十六进制指数形式格式化输出。 未应用本地化。
结果是一个字符串,表示参数 x 的符号和数量级(绝对值)。
如果 x 为负值或负零值,则结果将以 '-' ('\u002d') 开头。
如果 x 为正值或正零值,并且 '+' 给定标志,则结果将以 '+' ('\u002b') 开头。
数量级 m 的格式取决于其值。
<ul>
<li> 如果值为 NaN 或 infinite,则文本字符串“NaN”或“Infinity”将分别输出。
<li> 如果 m 为零,则由字符串 "0x0.0p0"表示。
<li> 如果 m 是具有 double 规范化表示形式的值,则子字符串用于表示符号和指数字段。 符号由字符 "0x1." 后跟十六进制表示形式(以分数形式表示)。 指数由 'p' ('\u0070') 表示,后跟无偏差指数的十进制字符串,就像调用指数值所 Integer#toString(int) Integer.toString 生成的一样。 如果指定精度,则该值舍入为给定的十六进制数字数。
<li> 如果 m 是一个 double 具有非正常表示形式的值,则除非指定精度在 1 到 12 范围内( '0x0.' 含 1 到 12),否则由字符后跟十六进制表示形式(以分数形式表示)和指数表示的字符表示 'p-1022'。 如果精度在间隔 [1,nbsp;12],将规范化亚正常值,使其以字符 '0x1.'开头,舍入为精度十六进制数字的数目,并相应地调整指数。 请注意,在非正常标志中,必须至少有一个非零数字。
</ul>
如果指定了或'('','标志,则会引发 aFormatFlagsConversionMismatchException。
<tr><th scope=“row” style=“vertical-align:top”><'A'td style=“vertical-align:top”>'\u0041'<td> The upper-case variant of 'a'. 表示数字的整个字符串将转换为大写,包括'x'()和'p'('\u0070'以及所有十六进制数字'f' - 'a'('\u0066''\u0061' - )。'\u0078'
</tbody></table>
为字节、短、整数和 Long 定义的所有标志都适用。
如果给定了 '#' 标志,则小数分隔符将始终存在。
如果没有提供“floatdFlags”>标志,则默认格式如下所示:
<ul>
<li> 输出在 li 负数内width<右对齐,以<'-' li>> 正数开头,正零不包括符号或额外的前导空格
<不包括任何> 分组分隔符
<li> 小数分隔符仅当数字紧随其后时才显示
</ul>
“floatDWidth”>宽度是要写入输出的最小字符数。 这包括任何符号、数字、分组分隔符、小数分隔符、指数符号、弧度指示器、括号和表示无穷大和 NaN 的字符串(如适用)。 如果转换后的值的长度小于宽度,则输出将被空格('\u0020')填充,直到字符总数等于宽度。 默认情况下,填充位于左侧。 如果提供了标志 '-' ,则填充将位于右侧。 如果未指定宽度,则没有最小值。
如果“floatDPrec”>转换是 'e', 'E' 或者 'f',精度是小数分隔符后面的数字数。 如果未指定精度,则假定 6为 .
如果转换为 'g' 或 'G',则精度是舍入后生成的数量级中的有效数字的总数。 如果未指定精度,则默认值为 6. 如果精度为 0,则需为 1。
如果转换为 'a' 或 'A',则精度为十六进制数字数(在基数点之后)。 如果未提供精度,则输出返回 Double#toHexString(double) 的所有数字。
“dnbdec”><b> BigDecimal </b>
可以应用 java.math.BigDecimal BigDecimal以下转换。
<table class=“striped”><caption style=“display:none”>floatConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'e'td style=“vertical-align:top”>'\u0065'<td> 要求使用“bscientific”>计算机化科学表示法设置输出的格式。 应用本地化算法。
数量级 m 的格式取决于其值。
如果 m 为正零或负零,则指数将为 "+00"。
否则,结果是一个字符串,表示参数的符号和数量级(绝对值)。 本地化算法中描述了符号的格式。 数量级 m 的格式取决于其值。
让 n 成为唯一整数,使 10<sup>n</sup <= m < 10<sup>> n+1</sup>;然后让一个数学上确切的 m 和 10<sup n</sup>> 的商,以便 1 <= a <'e'('\u0065'),后跟指数的符号,后跟以十进制整数表示形式,由方法Long#toString(long, int)生成, 和零填充以包含至少两个数字。
m 部分或 a 部分的结果中的位数等于精度。 如果未指定精度,则默认值为 6。 如果精度小于小数点右侧的数字数,则使用 java.math.RoundingMode#HALF_UP向上舍入算法对值进行舍入。 否则,可以追加零以达到精度。 对于值的规范表示形式,请使用 BigDecimal#toString()。
如果指定了 ',' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
<tr><th scope=“row” style=“vertical-align:top”><'E'td style=“vertical-align:top”>'\u0045'<td> The upper-case variant of 'e'. 指数符号将为 'E' ('\u0045')。
<tr><th scope=“row” style=“vertical-align:top”>'g'<td style=“vertical-align:top”>'\u0067'<td> 要求以一般科学表示法设置输出的格式,如下所示。 应用本地化算法。
精度舍入后,生成的数量级 m 的格式取决于其值。
如果 m 大于或等于 10<sup-4</sup>>,但小于 10<sup 精度</sup>>,则以十进制格式表示。
如果 m 小于 10<sup-4</sup>> 或大于或等于 10<sup>精度</sup>,则在计算机化科学表示法中表示它。
m 中的有效数字总数等于精度。 如果未指定精度,则默认值为 6. 如果精度为 0,则需为 1。
'#'如果提供标志,则会引发一个FormatFlagsConversionMismatchException标志。
<tr><th scope=“row” style=“vertical-align:top”><'G'td style=“vertical-align:top”>'\u0047'<td> The upper-case variant of 'g'.
<tr><th scope=“row” style=“vertical-align:top”><'f'td style=“vertical-align:top”>'\u0066'<td> 要求使用“bdecimal”>decimal 格式设置输出的格式。 应用本地化算法。
结果是一个字符串,表示参数的符号和数量级(绝对值)。 本地化算法中描述了符号的格式。 数量级 m 的格式取决于其值。
数量级的格式为 m 的整数部分,没有前导零,后跟小数分隔符,后跟一个或多个表示 m 的小数部分的小数位数。
m 部分或 a 部分的结果中的位数等于精度。 如果未指定精度,则默认值为 6。 如果精度小于小数点右侧的数字数,则使用 java.math.RoundingMode#HALF_UP向上舍入算法对值进行舍入。 否则,可以追加零以达到精度。 对于值的规范表示形式,请使用 BigDecimal#toString()。
</tbody></table>
为字节、短、整数和 Long 定义的所有标志都适用。
如果给定了 '#' 标志,则小数分隔符将始终存在。
如果未提供任何标志,则默认行为与 Float 和 Double 相同。
宽度和精度的规范与为 Float 和 Double 定义相同。
<h4>“ddt”>Date/Time</h4>
此转换可以应用于 long、Long、Calendar和 TemporalAccessor TemporalAccessorDate<table class=“striped”><caption style=“display:none”>DTConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'t'<td style=“vertical-align:top”>'\u0074'<td> Prefix for date and time conversion characters. <tr><th scope=“row” style=“vertical-align:top”><'T'td style=“vertical-align:top”>'\u0054'<td> The upper-case variant of 't'.
</tbody></table>
为转换'T'定义't'以下日期和时间转换字符后缀。 这些类型与 GNU date 和 POSIX strftime(3c)定义的类型相似,但并不完全相同。 提供了其他转换类型来访问特定于 Java 的功能(例如 'L' ,秒内的毫秒)。
以下转换字符用于格式设置时间:
<table class=“striped”><caption style=“display:none”>time</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'H'<td style=“vertical-align:top”><'\u0048'td> Hour of the day for the 24-hour clock, formatd as two digits with a leading zero as the leading zero as. as. 00 - 2300 corresponds to midnight.
<tr><th scope=“row” style=“vertical-align:top”><'I'td style=“vertical-align:top”>'\u0049'<td> Hour for the 12-hour clock, formatd Hour as two digits with a leading zero as the leading zero as necessary, e. 01 - 12 01 对应于一点(上午或下午)。
<tr><th scope=“row” style=“vertical-align:top”>'k'<td style=“vertical-align:top”><'\u006b'td> Hour of the day for the 24-hour clock, e. 0 - 230 corresponds to midnight.
<tr><th scope=“row” style=“vertical-align:top”>'l'<td style=“vertical-align:top”><'\u006c'td> Hour for the 12-hour clock, 即 1 - 12. 1 corresponds to one o'clock(上午或下午)。
<tr><th scope=“row” style=“vertical-align:top”><'M'td style=“vertical-align:top”>'\u004d'<td> Minute, the hour formatd Minute as two digits with a leading zero as leading zero as the necessary, e. 00 - 59
<tr><th scope=“row” style=“vertical-align:top”>'S'<td style=“vertical-align:top”><'\u0053'td> Seconds within the minute, formatd Seconds as two digits with a leading zero as leading zero as requiredy, i.00 - 6060“is a special value to support leap seconds.
<tr><th scope=“row” style=“vertical-align:top”><'L'td style=“vertical-align:top”>'\u004c'<td> 毫秒,第二个格式设置为三位数字,并根据需要使用前导零,即。 000 - 999
<tr><th scope=“row” style=“vertical-align:top”><'N'td style=“vertical-align:top”>'\u004e'<td> Nanosecond within the second, formatd Nanosecond as 9 digits with leading zeros with leading zero as the necessary, e. 000000000 - 999999999此值的精度受基础操作系统或硬件解析的限制。
<tr><th scope=“row” style=“vertical-align:top”><'p'td style=“vertical-align:top”>'\u0070'<td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning or afternoon marker in lower case, 例如“”am 或“pm”。 使用转换前缀 'T' 会强制此输出大写。 (请注意, 'p' 生成小写输出。这不同于生成大写输出的 GNU date 和 POSIX strftime(3c) 。
<tr><th scope=“row” style=“vertical-align:top”>'z'<td style=“vertical-align:top”><'\u007a'td>RFC 822 style numeric time zone offset from GMT, 例如. -0800 此值将根据需要调整夏令时。 对于long,LongDate使用的时区是此 Java 虚拟机实例的 TimeZone#getDefault() 默认时区。
<tr><th scope=“row” style=“vertical-align:top”>'Z'<td style=“vertical-align:top”>'\u005a'<td> A string, 代表时区的缩写。 此值将根据需要调整夏令时。 对于long,LongDate使用的时区是此 Java 虚拟机实例的 TimeZone#getDefault() 默认时区。 Formatter 的区域设置将取代参数的区域设置(如果有)。
<tr><th scope=“row” style=“vertical-align:top”><'s'td style=“vertical-align:top”>'\u0073'<td> Seconds,从 1970 00:00:00 年 1 月 1 日 UTC 开始的 epoch 开始,即Long.MIN_VALUE/1000到 .Long.MAX_VALUE/1000
<tr><th scope=“row” style=“vertical-align:top”><'Q'td style=“vertical-align:top”>'\u004f'<td> 毫秒,从 1970 00:00:00 年 1 月 1 日 UTC 开始的纪元开始,即Long.MIN_VALUE到 .Long.MAX_VALUE 此值的精度受基础操作系统或硬件解析的限制。
</tbody></table>
以下转换字符用于设置日期的格式:
<table class=“striped”><caption style=“display:none”>date</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'B'<td style=“vertical-align:top”><'\u0042'td> Locale-specific java.text.DateFormatSymbols#getMonths full month name, 例如. "January""February"
<tr><th scope=“row” style=“vertical-align:top”>'b'<td style=“vertical-align:top”><'\u0062'td> Locale-specific java.text.DateFormatSymbols#getShortMonths abbreviated month name,例如。 "Jan""Feb"
<tr><th scope=“row” style=“vertical-align:top”><'h'td style=“vertical-align:top”>'\u0068'<td> Same as 'b'.
<tr><th scope=“row” style=“vertical-align:top”><'A'td style=“vertical-align:top”>'\u0041'<td> Locale-specific full name of the java.text.DateFormatSymbols#getWeekdays day of the week, 例如"Sunday","Monday"<tr><th scope=“row” style=“vertical-align:top”'a'><td style=“vertical-align:top”><'\u0061'td> Locale-specific short name of the java.text.DateFormatSymbols#getShortWeekdays day,例如"Sun",tr>< "Mon"<th scope=“row” style=“vertical-align:top”>'C'<td style=“vertical-align:top”><'\u0043'td> Four-digit year 除以100,格式设置为两位数字,并根据需要将前导零设置为两位数, 例如<00 - 99,tr><th scope=“row” style=“vertical-align:top”>'Y'<td style=“vertical-align:top”>'\u0059'<td> Year,格式设置为至少四位数字,并根据需要使用前导零,例如0092等于92公历的 CE。
<tr><th scope=“row” style=“vertical-align:top”><'y'td style=“vertical-align:top”>'\u0079'<td> Last two digits of the year, formatted with leading zeros as necessary, e. 00 - 99
<tr><th scope=“row” style=“vertical-align:top”><'j'td style=“vertical-align:top”>'\u006a'<td> Day of year, formatd as three digits with leading zeros as 3 digits with leading zeros as the gregorian calendar, 001 - 366 例如,for Gregorian calendar. 001 对应于年份的第一天。
<tr><th scope=“row” style=“vertical-align:top”>'m'<td style=“vertical-align:top”><'\u006d'td> Month, formatd as two digits with leading zeros as leading zeros as requiredy, i. 01 - 13where “01” is the first month of the year and (“13” is a special value to support calendars.
<tr><th scope=“row” style=“vertical-align:top”>'d'<td style=“vertical-align:top”><'\u0064'td> Day of month, formatd as two digits with leading zeros as leading zeros as necessary, e. 01 - 3101
<tr><th scope=“row” style=“vertical-align:top”>'e'<td style=“vertical-align:top”><'\u0065'td> Day of month, formatd as two digits, 即 1 - 31 where “1” is the first day of the month.
</tbody></table>
以下转换字符用于设置常见日期/时间组合的格式。
<table class=“striped”><caption style=“display:none”>composites</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'R'<td style=“vertical-align:top”><'\u0052'td> Time formatted for the 24-hour clock<"%tH:%tM" as tr><th scope=“row” style=“vertical-align:top”<'T'>td style=“vertical-align:top”'\u0054'<>td> Time formatted for the 24-hour clock."%tH:%tM:%tS"
<tr><th scope=“row” style=“vertical-align:top”><'r'td style=“vertical-align:top”>'\u0072'<td> Time formatted for the 12-hour clock."%tI:%tM:%tS %Tp" 上午或下午标记('%Tp')的位置可能依赖于区域设置。
<tr><th scope=“row” style=“vertical-align:top”><'D'td style=“vertical-align:top”>'\u0044'<td> Date formatted as "%tm/%td/%ty".
<tr><th scope=“row” style=“vertical-align:top”>'F'<td style=“vertical-align:top”><'\u0046'td>ISO 8601 complete date formatd as."%tY-%tm-%td"
<tr><th scope=“row” style=“vertical-align:top”>'c'<td style=“vertical-align:top”><'\u0063'td> Date and time formatted as"%ta %tb %td %tT %tZ %tY", 例如. "Sun Jul 20 16:17:00 EDT 1969"
</tbody></table>
'-'为常规转换定义的标志适用。 如果给定了 '#' 标志,则会引发一个 FormatFlagsConversionMismatchException 标志。
宽度是要写入输出的最小字符数。 如果转换后的值的长度小于 width ,则输出将被空格('\u0020')填充,直到字符总数等于宽度。 默认情况下,填充位于左侧。 如果提供了标志 '-' ,则填充将位于右侧。 如果未指定宽度,则没有最小值。
精度不适用。 如果指定精度,则将引发一个 IllegalFormatPrecisionException 。
<h4>“dper”>Percent</h4>
转换与任何参数不对应。
<table class=“striped”><caption style=“display:none”>DTConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'%'<td> 结果为文本 '%' ()'\u0025'
宽度是要写入输出的最小字符数,包括 '%'。 如果转换后的值的长度小于 width ,则输出将被空格('\u0020')填充,直到字符总数等于宽度。 填充位于左侧。 如果未指定宽度, '%' 则只指定为输出。
'-'为常规转换定义的标志适用。 如果提供了任何其他标志,则会引发 a FormatFlagsConversionMismatchException 。
精度不适用。 如果指定精度,将引发一个 IllegalFormatPrecisionException 。
</tbody></table>
<h4>“dls”>行分隔符</h4>
转换与任何参数不对应。
<table class=“striped”><caption style=“display:none”>DTConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'n'<td> the platform specific line separator as returned by .System#lineSeparator()
</tbody></table>
标志、宽度和精度不适用。 如果提供任何值IllegalFormatFlagsExceptionIllegalFormatWidthException,则分别会引发和IllegalFormatPrecisionException。
<h4>“dpos”>参数索引</h4>
格式说明符可以通过三种方式引用参数:
<ul>
<当格式说明符包含参数索引时,将使用 li>Explicit 索引 。 参数索引是一个十进制整数,指示参数在参数列表中的位置。 第一个参数由“”1$引用,第二个参数由“2$”等引用。可以多次引用参数。
例如:
<blockquote>
formatter.format("%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s",
"a", "b", "c", "d")
// -> "d c b a d c b a"
</blockquote>
<当格式说明符包含一个 () 标志时,将使用 li>相对索引,这会导致重新使用上一格式说明符的参数。'\u003c''<' 如果没有以前的参数,则会引发 a MissingFormatArgumentException 。
<blockquote>
formatter.format("%s %s %<s %<s", "a", "b", "c", "d")
// -> "a b b b"
// "c" and "d" are ignored because they are not referenced
</blockquote>
<当格式说明符不包含参数索引或标志时,将使用 li>普通索引。'<' 使用普通索引的每个格式说明符都会将顺序隐式索引分配给参数列表中,该参数列表独立于显式索引或相对索引使用的索引。
<blockquote>
formatter.format("%s %s %s %s", "a", "b", "c", "d")
// -> "a b c d"
</blockquote>
</ul>
可以使用格式字符串来使用所有形式的索引,例如:
<blockquote>
formatter.format("%2$s %s %<s %s", "a", "b", "c", "d")
// -> "b a a b"
// "c" and "d" are ignored because they are not referenced
</blockquote>
参数的最大数目受引用 Java&trade 所定义的 <>Java 数组的最大维度的限制;虚拟机规范</引用>。 如果参数索引与可用参数不对应,则会引发一个 MissingFormatArgumentException 参数。
如果参数多于格式说明符,则忽略额外的参数。
除非另有指定,否则将参数传递给 null 此类中的任何方法或构造函数将导致 NullPointerException 引发。
在 1.5 中添加。
适用于 . 的 java.util.FormatterJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| Formatter() |
构造新的格式化程序。 |
| Formatter(File) |
使用指定的文件构造新的格式化程序。 |
| Formatter(File, Charset, Locale) |
使用指定的文件、字符集和区域设置构造新的格式化程序。 |
| Formatter(File, String) |
使用指定的文件和字符集构造新的格式化程序。 |
| Formatter(File, String, Locale) |
使用指定的文件、字符集和区域设置构造新的格式化程序。 |
| Formatter(IAppendable) |
构造具有指定目标的新格式化程序。 |
| Formatter(IAppendable, Locale) |
使用指定的目标和区域设置构造新的格式化程序。 |
| Formatter(Locale) |
使用指定的区域设置构造新的格式化程序。 |
| Formatter(PrintStream) |
使用指定的打印流构造新的格式化程序。 |
| Formatter(Stream) |
使用指定的输出流构造新的格式化程序。 |
| Formatter(Stream, Charset, Locale) |
使用指定的输出流、字符集和区域设置构造新的格式化程序。 |
| Formatter(Stream, String) |
使用指定的输出流和字符集构造新的格式化程序。 |
| Formatter(Stream, String, Locale) |
使用指定的输出流、字符集和区域设置构造新的格式化程序。 |
| Formatter(String) |
构造具有指定文件名的新格式化程序。 |
| Formatter(String, Charset, Locale) |
使用指定的文件名、字符集和区域设置构造新的格式化程序。 |
| Formatter(String, String) |
使用指定的文件名和字符集构造新的格式化程序。 |
| Formatter(String, String, Locale) |
使用指定的文件名、字符集和区域设置构造新的格式化程序。 |
属性
| Class |
返回此 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| JniIdentityHashCode |
printf 样式格式字符串的解释器。 (继承自 Object) |
| JniPeerMembers |
printf 样式格式字符串的解释器。 |
| PeerReference |
printf 样式格式字符串的解释器。 (继承自 Object) |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
方法
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| Close() |
关闭此格式化程序。 |
| Dispose() |
printf 样式格式字符串的解释器。 (继承自 Object) |
| Dispose(Boolean) |
printf 样式格式字符串的解释器。 (继承自 Object) |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| Flush() |
刷新此格式化程序。 |
| Format(Locale, String, Object[]) |
使用指定的格式字符串和参数将格式化字符串写入此对象的目标。 |
| Format(String, Object[]) |
使用指定的格式字符串和参数将格式化字符串写入此对象的目标。 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| IoException() |
返回 |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Locale() |
返回此格式化程序构造设置的区域设置。 |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| Out() |
返回输出的目标。 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| ToArray<T>() |
printf 样式格式字符串的解释器。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| UnregisterFromRuntime() |
printf 样式格式字符串的解释器。 (继承自 Object) |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<>< (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| IJavaPeerable.Disposed() |
printf 样式格式字符串的解释器。 (继承自 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
printf 样式格式字符串的解释器。 (继承自 Object) |
| IJavaPeerable.Finalized() |
printf 样式格式字符串的解释器。 (继承自 Object) |
| IJavaPeerable.JniManagedPeerState |
printf 样式格式字符串的解释器。 (继承自 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
printf 样式格式字符串的解释器。 (继承自 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
printf 样式格式字符串的解释器。 (继承自 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
printf 样式格式字符串的解释器。 (继承自 Object) |
扩展方法
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
printf 样式格式字符串的解释器。 |
| GetJniTypeName(IJavaPeerable) |
printf 样式格式字符串的解释器。 |
| FlushAsync(IFlushable) |
printf 样式格式字符串的解释器。 |