Formatter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個用於 printf 風格格式字串的直譯器。
[Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)]
public sealed class Formatter : Java.Lang.Object, IDisposable, 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 。
Formatter 不一定適合多執行緒存取。 執行緒安全是可選的,且由此類別方法的使用者負責。
Java 語言的格式化列印深受 C printf語言啟發。 雖然格式字串與 C 語言相似,但為了配合 Java 語言並利用其部分特性,已做出一些客製化。 此外,Java 格式比 C 更嚴格;例如,如果轉換與旗標不相容,會拋出例外。 在 C 語言中,不適用的旗標會被默默忽略。 因此,格式字串的設計目的是讓 C 程式設計師能辨識,但不一定與 C 格式完全相容。
預期用法範例:
<引用>
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)"
</區塊引用>
常見格式請求的便利方法如以下調用所示:
<引用>
// 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"
</區塊引用>
與 C sprintf(3)語言類似,字串可使用靜態方法 String#format(String,Object...) String.format格式化:
<引用>
// 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"
</區塊引用>
<h2>“org”>組織</h2>
本規範分為兩部分。 第一部分摘要涵蓋基本格式概念。 本節適合想快速開始且熟悉其他程式語言格式化列印的使用者。 第二部分「細節」則涵蓋具體的實作細節。 它適合想要更精確格式行為規範的使用者。
<h2>“summary”摘要>/<h2>
本節旨在簡要介紹格式概念。 欲了解具體行為細節,請參閱「詳情」章節。
<h3>“syntax”>格式 字串 語法</h3>
每個產生格式化輸出的方法都需要一個 格式字串 和 參數清單。 格式字串是 a String ,可能包含固定文字及一個或多個嵌入 格式指定符。 請考慮下列範例:
<引用>
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
</區塊引用>
這個格式字串是方法的 format 第一個參數。 它包含三個格式指定符「%1$tm“”、“”%1$te“和”%1$tY“,指示參數應如何處理以及應插入文本的位置。 格式字串的其餘部分為固定文字,包含 "Dukes Birthday: " 其他空格或標點符號。
參數清單包含格式字串之後傳入方法的所有參數。 在上述範例中,參數列表大小為 1,包含物件 java.util.Calendar Calendarc。
<UL>
<li> 一般型、字元型與數字型別的格式規範符具有以下語法:
<引用>
%[argument_index$][flags][width][.precision]conversion
</區塊引用>
可選 argument_index 是一個十進位整數,表示該參數在參數列表中的位置。 第一個論點以「1$」表示,第二個以「2$」表示,依此類推。
可選 旗標 是一組字元,用來修改輸出格式。 有效旗標的集合取決於轉換。
可選 寬 度為正十進位整數,表示應寫入輸出的最小字元數。
可選 的精確度 是非負的十進位整數,通常用來限制字元數。 具體行為取決於轉換方式。
所需的 轉換 是一個字元,用來表示論證應該如何格式化。 給定參數的有效轉換集合取決於該參數的資料型態。
<li> 用於表示日期與時間的型別格式規範符語法如下:
<引用>
%[argument_index$][flags][width]conversion
</區塊引用>
可選的 argument_index、 旗幟 和 寬度 如上定義。
所需的 轉換 是一個兩個字元的序列。 第一個字元為 't' 或 'T'。 第二個字元表示所使用的格式。 這些字元與 GNU date 和 POSIX strftime(3c)定義的字元相似,但並非完全相同。
<li> 不對應參數的格式指定符語法如下:
<引用>
%[flags][width]conversion
</區塊引用>
可選 的旗幟 與 寬度 定義如上所述。
所需的 轉換 是一個字元,表示要插入在輸出中的內容。
</ul>
<h3> 轉換 </h3>
轉換類別分為以下幾類:
<進攻線>
<li><b>General</b> - 可應用於任何參數類型
<li>b Character/b< - 可用於代表 Unicode 字元的基本型別:、>、 <>charCharacterbyte和 。ByteshortShort 此轉換也int可用於類型,當IntegerCharacter#isValidCodePoint返回true< li><b>Numeric</b 時>
<進攻線>
<li>b 積分/b< - 可應用於 Java 積分類型:>、 <>byteByteshortShortintInteger(但不包括long或)Longjava.math.BigInteger BigIntegercharCharacter
<li><b 浮點>數/b< - 可用於 Java 浮點型別:、>、floatFloatdoubleDoublejava.math.BigDecimal BigDecimal、 、 和 /ol<>
<li>b Date/Time</b> - 可用於能夠編碼日期或時間的 Java 類型:<, >, , long, ,LongCalendarDate 以及 liTemporalAccessor TemporalAccessor<b>Percent</b> - 產生一個字面值<()>'%''\u0025'
<li><b>線路分離器</b> - 產生平台專用線路分隔器
</ol>
對於類別 General、 Character、 Numeric、 Integral 及 Date/Time 轉換,除非另有說明,若參數 arg 為 null,則結果為「null」。
下表總結了所支援的轉換方式。 以大寫字母表示的轉換(即 'B'、 'H'、 'S''C''X''E''G''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 <scope = “col” style=“vertical-align:bottom”><>描述 /thead<>tbody<>tr<scope =“row” style=“vertical-align:top”><>, 'b''B'td style=“vertical-align:top”<一般 TD 若參數 > 為 <,則結果為「>」。nullfalse 若 arg 是 boolean 或 Boolean,則結果為由 String#valueOf(boolean) String.valueOf(arg)返回的字串。 否則,結果為「真」。
<tr><th scope=“row” style=“vertical-align:top”>'h', 'H'<td style=“vertical-align:top”> 一般 <td> 結果是透過調用 Integer.toHexString(arg.hashCode())得到的。
<tr><th scope=“row” style=“vertical-align:top”>'s', 'S'<td style=“vertical-align:top”> 一般 <td> 若 arg 實作 Formattable,則Formattable#formatTo arg.formatTo會被調用。 否則,結果則是透過調用 arg.toString()來得到。
<TR><TH scope=“row” style=“vertical-align:top”>'c', 'C'<td style=“vertical-align:top”> 字元 <td> 結果是一個 Unicode 字元
<TR><TH scope=“row” style=“vertical-align:top”td>'d'< style=“vertical-align:top”> 積分 <td> 結果格式化為十進位整數
<tr><th scope=“row” style=“vertical-align:top”>'o'<td style=“vertical-align:top”> 積分 <td> 結果格式化為八進制整數
<TR><TH scope=“row” style=“vertical-align:top”>'x', 'X'<td style=“vertical-align:top”> 積分 <td> 結果格式化為十六進位整數
<TR><TH scope=「row」樣式=「vertical-align:top」>'e', 'E'<td style=「vertical-align:top」> 浮點 <數 td> 結果以電腦科學記號法格式化為小數
<TR><TH scope=“row” style=“vertical-align:top”td>'f'< style=“vertical-align:top”> 浮點 <數 td> 結果格式為小數
<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> 結果格式化為帶有顯著數和指數的十六進位浮點數。 此轉換在 <b>< not/b> 中被支援,BigDecimal儘管後者屬於浮點參數類別。
<TR><TH scope=“row” style=“vertical-align:top”>'t', 'T'<td style=“vertical-align:top”> 日期/時間 <TD> 用於日期與時間轉換字元的前綴。 請參閱日期/時間轉換。
<tr><th scope=“row” style=“vertical-align:top”td>'%'< style=“vertical-align:top”> 百分比 <td> 結果為一個字面值 '%' ('\u0025')
<tr><th scope=“row” style=“vertical-align:top”td>'n'< style=“vertical-align:top”> 行分隔器 <td> 結果就是平台專用的行分隔符
</tbody></表格>
任何未明確定義為轉換的字元皆屬非法,且保留給未來擴充使用。
<h3>“dt”>日期/時間轉換/<h3>
以下定義 '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> 24 小時制的整點,格式為兩位數,必要時加前置零,即 00 - 23。
<tr><th scope=“row” style=“vertical-align:top”>'I'< td> 12 小時鐘,格式為兩位數,必要時加前置零,即 。 01 - 12
<tr><th scope=“row” style=“vertical-align:top”>'k'< td> 24 小時制的一天中小時,即 。 0 - 23
<tr><th scope=“row” style=“vertical-align:top”>'l'< td> 12 小時制時鐘,即 . 1 - 12
<tr><th scope=“row” style=“vertical-align:top”>'M'<td> 小時內的分鐘,格式為兩位數,必要時前置零,即 。 00 - 59
<tr><th scope=“row” style=“vertical-align:top”>'S'<td> 分鐘內的秒數,格式為兩位數,前置零, 00 - 60 即(“60”是支援閏秒所需的特殊值)。
<tr><th scope=“row” style=“vertical-align:top”>'L'<td> 毫秒在秒內格式化為三位數,必要時先加零,即 。 000 - 999
<tr><th scope=“row” style=“vertical-align:top”>'N'< td> 一秒內的納秒,格式為九位數字,必要時先加零,即 。 000000000 - 999999999
<tr><th scope=“row” style=“vertical-align:top”>'p'<td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings 早晨或下午標記,小寫,例如“”am 或「pm」。 使用轉換前綴 'T' 會強制輸出為大寫。
<tr><th scope=“row” style=“vertical-align:top”>'z'<td> RFC 822 風格的數值時區偏移,與 GMT 不同,例如 。 -0800 此數值將根據夏令時間調整。 對於 long、 Long,以及Date所使用的時區是 這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。
<tr><th scope=“row” style=“vertical-align:top”>'Z'<td> 一個代表時區縮寫的字串。 此數值將根據夏令時間調整。 對於 long、 Long,以及Date所使用的時區是 這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。 Formatter 的 locale 會取代論證的 locale(如果有的話)。
<tr><th scope=“row” style=“vertical-align:top”>'s'< td> 自 1970 00:00:00 年 1 月 1 日 UTC 開始的紀元開始的秒數,即 Long.MIN_VALUE/1000 到 。Long.MAX_VALUE/1000
<tr><th scope=“row” style=“vertical-align:top”>'Q'< td> 自197000:00:00年1月1日 UTC 開始的紀元開始以來的毫秒,即 。Long.MIN_VALUELong.MAX_VALUE
</tbody></表格>
以下轉換字元用於日期格式化:
<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 完整月份名稱,例如 "January", , . "February"
<tr><th scope=“row” style=“vertical-align:top”>'b'<td> Locale-specific java.text.DateFormatSymbols#getShortMonths 縮寫月份名稱,例如 "Jan", , "Feb"
<TR><TH scope=“row” style=“vertical-align:top”>'h'<td> 與 。'b'
<tr><th scope=“row” style=“vertical-align:top”>'A'< td> java.text.DateFormatSymbols#getWeekdays day of the day of the locale"Sunday", 例如, tr"Monday"<>< th scope=“row” style=“vertical-align:top”>'a'< td> java.text.DateFormatSymbols#getShortWeekdays day day of the day of the week, "Sun"例如, "Mon"<tr><th scope=“row” style=“vertical-align:top”>'C'< td> 四位數年份除以100格式化為兩位數,必要時先加零,即 00 - 99tr th 範圍=「行」風格=「垂直對齊:頂」<><>td'Y' 年份,格式化為至少四位數字,前置零視需要,例如<>格里曆為 CE。009292
<tr><th scope=“row” style=“vertical-align:top”>'y'< td> 年份最後兩位數字,必要時以前置零格式化,即 。 00 - 99
<tr><th scope=“row” style=“vertical-align:top”>'j'<td> 年中日期,格式為三位數,必要時先加零,例如001 - 366格里曆。
<tr><th scope=“row” style=“vertical-align:top”>'m'<td> 月份,格式為兩位數,必要時先加零,即 。 01 - 13
<TR><th scope=“row” style=“vertical-align:top”>'d'< td> 月份日期,格式為兩位數,必要時先加零,即 01 - 31<tr><th scope =“row” style=“vertical-align:top”>'e'< td> 月份日期,格式為兩位數,即 。 1 - 31
</tbody></表格>
以下轉換字元用於格式化常見的日期/時間組合。
<table class=“striped”><caption style=“display:none”>composites</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'R'< td> 24 小時制時間格式化為 "%tH:%tM"<tr><th scope =“row” style=“vertical-align:top”>'T'< td> 24 小時制時間格式化為 。"%tH:%tM:%tS"
<TR><TH scope=“row” style=“vertical-align:top”>'r'< td> 12小時制時間格式化為 。"%tI:%tM:%tS %Tp" 上午或下午標記'%Tp'()的位置可能依地區而異。
<TR><th scope=“row” style=“vertical-align:top”>'D'<td> 日期格式為 。"%tm/%td/%ty"
<TR><TH scope=“row” style=“vertical-align:top”>'F'<td> ISO 8601 完整日期格式為 。"%tY-%tm-%td"
<tr><th scope=“row” style=“vertical-align:top”>'c'< td> 日期與時間格式為 "%ta %tb %td %tT %tZ %tY",例如 。 "Sun Jul 20 16:17:00 EDT 1969"
</tbody></表格>
任何未明確定義為日期/時間轉換後綴的字元皆屬非法,且保留給未來擴充。
<h3> 旗幟 </h3>
下表總結了所支援的旗標。 y 表示該旗標已支援上述參數類型。
<table class=“striped”>caption style=“display:none”<genConv>/caption<>thead<>tr<th scope=“col” style=“vertical-align:bottom”>< 旗幟 >scope =“col” style=“vertical-align:bottom” general <th scope=“col” style=“vertical-align:bottom”><>字符 th scope =“col” style=“vertical-align:bottom” integral <th scope=“col” style=“vertical-align:bottom”>< floating point >th scope =“col” style=“col” style=”<垂直對齊:底部“> 日期/時間 <th scope=”col“ style=”vertical-align:bottom“> 描述 </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; vertical-align:top“> y <td style=”text-align:center;垂直對齊:頂部」> 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:top”> y <td style=“text-align:center; vertical-align:top”> - <td> 結果總是包含一個符號
<tr><th scope=「row」> ' 』 <TD style=“text-align:center;垂直對齊:頂端“> - <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:top“> y <td style=”text-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 td>結果將包含特定地區的 java.text.DecimalFormatSymbols#getGroupingSesolator 分隔符<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”< - >td style=“text-align:center; vertical-align:top”<> y sup<> 4/sup<>td style=“text-align:center; vertical-align:top”< y>sup<5>/sup<>td<style=“text-align:center”> - <td> 結果會以負數括號內包圍
</tbody></表格>
<sup>1</sup> 取決於 的 Formattable定義。
<SUP>2</SUP> 僅供轉換。'd'
<sup>3</sup> 用於 'o'、 'x'、 及 'X' 轉換。
<sup 4/sup> 對 <、 >、 'd',以及'o'對 、 'x''X'java.math.BigInteger BigInteger'd'byteByteshort的轉換應用Short或int應用於 。IntegerlongLong
<僅用於 、 、 、 、 及 > 轉換 的 sup<> 5/sup'e'。 'E''f''g''G'
任何未明確定義為旗標的字元皆屬非法,且保留給未來擴充。
<h3> 寬度 </h3>
寬度是寫入輸出的最小字元數。 對於線分隔符轉換,寬度不適用;若提供例外,將被拋出例外。
<h3> 精度 </h3>
對於一般參數類型,精度是要寫入輸出的最大字元數。
對於浮點轉換 'a'、 'A'、 'e','E''f'精度為基數點後的位數。 若換算為'g''G'或,則精度為四捨五入後所得幅度的總數字數。
對於字元、積分和日期/時間等參數類型,以及百分比與行分隔符的轉換,精度不適用;若提供精確度,則會拋出例外。
<h3> 論元索引 </h3>
參數索引是一個十進位整數,表示參數在參數列表中的位置。 第一個論點以「1$」表示,第二個以「2$」表示,依此類推。
另一種依位置引用參數的方法是使用 '<' ('\u003c') 旗標,這會使前一個格式指定符的參數被重複使用。 例如,以下兩個陳述會產生相同的字串:
<引用>
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);
</區塊引用>
<hr><h2>“detail”Details>/<h2>
本節旨在提供格式化的行為細節,包括條件與例外、支援的資料型態、本地化,以及旗標、轉換與資料型態之間的互動。 關於格式概念的概述,請參閱摘要
任何未明確定義為轉換、日期/時間轉換後綴或旗標的字元皆屬非法,且保留給未來擴充使用。 在格式字串中使用此類字元會導致 UnknownFormatConversionException 拋出 or UnknownFormatFlagsException 字元。
若格式指定符包含寬度或精度值無效值,或不支援,則 IllegalFormatWidthException 會分別拋出 或 IllegalFormatPrecisionException 。 同樣地,參數索引的值為零會得到 IllegalFormatException。
如果格式指定符包含不適用於對應參數的轉換字元,則會拋出 a IllegalFormatConversionException 。
精度值必須在0到Integer#MAX_VALUE包含 的範圍內,否則IllegalFormatPrecisionException會被拋出。
寬度的值必須在一到Integer#MAX_VALUE包含 的範圍內,否則IllegalFormatWidthException會被拋出。請注意,寬度有時看起來像負值,但負號是旗號。 例如格式字串 "%-20s" 寬 度為20 , 旗標 為「-」。
索引的值必須在一到Integer#MAX_VALUE包含 的範圍內,否則IllegalFormatException會拋出。
所有指定的例外都可以被 的formatFormatter任意format方法以及方便方法(如 String#format(String,Object...) String.format 和java.io.PrintStream#printf(String,Object...) PrintStream.printf)拋出。
對於類別 General、 Character、 Numeric、 Integral 及 Date/Time 轉換,除非另有說明,若參數 arg 為 null,則結果為「null」。
以大寫字母表示的轉換(即 'B'、 'H'、 'S''C''X''E''G''A''T'與 )與相應小寫轉換字元相同,但結果依據當前java.util.Locale Locale規則轉換為大寫。 若在建構實例時或方法調用時未指定明確的區域,則使用 。java.util.Locale.Category#FORMAT default locale
<h3>“dgen”>General</h3>
以下一般的轉換可適用於任何參數類型:
<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」。 若參數為 boolean 或 Boolean,則結果為由 String#valueOf(boolean) String.valueOf()返回的字串。 否則,結果為「true」。
如果 '#' 旗子被給出,則會擲出A FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'B'<td style=“vertical-align:top”>'\u0042'<td> 大寫變體。'b'
<tr><th scope=“row” style=“vertical-align:top”>'h'<td style=“vertical-align:top”>'\u0068'<td> 產生一個字串,代表物件的雜湊碼值。
結果是透過調用 Integer.toHexString(arg.hashCode())得到的。
如果 '#' 旗子被給出,則會擲出A FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'H'<td style=“vertical-align:top”>'\u0048'<td> 大寫變體。'h'
<tr><th scope=“row” style=“vertical-align:top”>'s'<td style=“vertical-align:top”>'\u0073'<td> 產生一個字串。
若參數實 Formattable作 ,則會呼叫其 Formattable#formatTo formatTo 方法。 否則,結果是透過調用參數的方法 toString() 來得到。
若 '#' 標記為 且參數不是 , Formattable則會拋出 a FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'S'<td style=“vertical-align:top”>'\u0053'<td> 大寫變體。's'
</tbody></表格>
以下「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> 左邊對齊輸出。 轉換後的值末尾會加上空格'\u0020'(),以填滿欄位最小寬度。 若未提供寬度,則會擲出 a MissingFormatWidthException 。 若未給出此旗標,則輸出將被右對齊。
<tr><th scope=“row” style=“vertical-align:top”>'#'<td style=“vertical-align:top”>'\u0023'<td> 要求輸出使用替代形式。 形式的定義由轉換決定。
</tbody></表格>
「genWidth」>寬度是要寫入輸出的最小字元數。 若轉換後值長度小於寬度,則輸出會被 (' ') 填充'\u0020',直到字元總數等於寬度。 墊片預設在左側。 如果 '-' 旗幟被給予,襯墊會在右側。 如果未指定寬度,則沒有最小寬度。
精度是指輸出中需寫入的最大字元數。 精度會先於寬度,因此即使寬度大於精確度,輸出也會被截斷成 precision 字元。 若未指定精確度,則字元數沒有明確限制。
<h3>“dchar”>Character</h3>
此轉換可應用於 char 和 Character。 它也可以應用於類型 byte、 Byte、 short和 Short,int當IntegerCharacter#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> 將參數格式化為 Unicode 字元,如 Unicode 字元表示法所述。 當參數代表補充字元時,這可能包含多個 16 位元 char 。
如果 '#' 旗子被給出,則會擲出A FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'C'<td style=“vertical-align:top”>'\u0043'<td> 大寫變體。'c'
</tbody></表格>
'-'適用於一般轉換的旗標適用。 如果 '#' 旗子被給出,則會擲出A FormatFlagsConversionMismatchException 。
寬度定義為一般換算。
精確度不適用。 若指定精度,則會拋出 。IllegalFormatPrecisionException
<h3>“dnum”> Numeric</h3>
數值換算分為以下幾類:
<進攻線>
<li>擊敗 Byte、Short、Integer 和 Long</b>li<><b>BigInteger</b>li<><b Float>和 Double</b>li<><b BigDecimal></b>/ol<><>
數值類型將依照以下演算法格式化:
<b>「L10n演算法」> 數字定位演算法</b>
在取得整數部分、分數部分及指數(依資料型態適用)的數字後,會套用以下轉換:
<進攻線>
<li> 字串中的每個數字 d 都被相對於當前區域的 java.text 計算出的區域特定數字取代。DecimalFormatSymbols#getZeroDigit() 零位z;即 d - '0' + Z。
<li> 如果存在十進位分隔符,則會替換為特定地區的 java.text.DecimalFormatSymbols#getDecimalSesolator 十進位分隔符。
<li> 如果 ',' 給出了 ('\u002c') “L10nGroup”> 標誌,則會透過掃描字串整數部分,從最低有效位到最高位,並在 locale.text.DecimalFormat#getGroupingSize() 群組大小所定義的間隔插入特定區域的 java.text.DecimalFormatSymbols#getGroupingSize() 群組分隔符。
<如果>'0'標示已給出,則在特定區域的java.text.DecimalFormatSymbols#getZeroDigit() 在符號字元後(若有)及第一個非零數字之前插入零位,直到字串長度等於請求欄位寬度。
<li> 若值為負且 '(' 標記為 ,則 '(' 前加 ('\u0028') 並 ')' 加 ('\u0029') 後加。
<如果> 值為負(或浮點負零)且 '(' 未給出旗標,則前加一個 '-' ('\u002d')。
<如果>'+'給出旗標且值為正或零(或浮點數為正零),則前方會加上一個'+'('\u002b')。
</ol>
若值為 NaN 或正無限大,則輸出字串「NaN」或「Infinity」。 若值為負無限大,則若標記為 , '(' 輸出為「(無限)」,否則輸出為「-Infinity」。 這些數值並非局限性。
「dnint」><b> 位元組、短字、整數與長 <字元 /b>
以下byte可對 、 Byte、 shortShort、 intIntegerlong及 Long進行轉換。
<table class=“striped”><caption style=“display:none”>IntConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”td>'d'< style=“vertical-align:top”>'\u0064'<td> 將參數格式化為小數整數。 並應用本地化演算法。
如果 '0' 標記為負,則零填充會在符號之後出現。
若 '#' 旗幟被出示,則會擲出旗 FormatFlagsConversionMismatchException 幟。
<TR><TH scope=“row” style=“vertical-align:top”>'o'<td style=“vertical-align:top”>'\u006f'<td> 將參數格式化為整數,進位八。 不進行本地化。
若 x 為負,則結果將是將 2<sup>n</sup> 加 n 到靜態 SIZE 欄位中 Byte#SIZE Byte、Short#SIZE Short、Integer#SIZE Integer 或 Long#SIZE Long 類別中回傳的位元數後產生的無符號值。
若 '#' 標示為標誌,則輸出將始終以基數指示器 '0'開始。
若 '0' 標示為標誌,輸出會在任何符號指示後以場寬的前置零填充。
若 '(', '+', ' ',或者 ',' 給出旗幟後會拋出 a FormatFlagsConversionMismatchException 。
<TR><TH scope=“row” style=“vertical-align:top”>'x'<td style=“vertical-align:top”>'\u0078'<td> 將參數格式化為十六進制的整數。 不進行本地化。
若 x 為負,則結果將是將 2<sup>n</sup> 加 n 到靜態 SIZE 欄位中 Byte#SIZE Byte、Short#SIZE Short、Integer#SIZE Integer 或 Long#SIZE Long 類別中回傳的位元數後產生的無符號值。
若 '#' 標示為標誌,則輸出將始終以基數指示器 "0x"開始。
若 '0' 標示標示,輸出將填充至場寬,並在基數指示器或符號後方加上前置零(若有)。
若 '('給出 、 ' '、 '+'或 ',' 旗標,則會拋出 a FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'X'<td style=“vertical-align:top”>'\u0058'<td> 大寫變體。'x' 代表該數字的整串字串會被轉換成 String#toUpperCase(大寫),包括'x'(如有)及所有十六進位數字'a' - 'f'()。'\u0061' - '\u0066'
</tbody></表格>
若換算為 、 或 ,且同時給出 與 '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> 要求輸出對所有正數都包含正號。 若未標示此旗標,則只有負值會包含符號。
若同時給出 和 '+'' ' 旗幟,則會擲出 a IllegalFormatFlagsException 。
<tr><th scope=“row” style=“vertical-align:top”>' '<td style=“vertical-align:top”>'\u0020'<td> 要求輸出中多留一個空格('\u0020')以表示非負值。
若同時給出 和 '+'' ' 旗幟,則會擲出 a IllegalFormatFlagsException 。
<tr><th scope=“row” style=“vertical-align:top”>'0'<td style=“vertical-align:top”>'\u0030'<td> 需要輸出先填充 java.text.decimalFormatSymbols#getZeroFigure 0 為最小欄位寬度,除非在 NaN 或 Infinity 轉換時。 若未提供寬度,則會擲出 a MissingFormatWidthException 。
若同時給出 和 '-''0' 旗幟,則會擲出 a IllegalFormatFlagsException 。
<tr><th scope=“row” style=“vertical-align:top”>','<td style=“vertical-align:top”>'\u002c'<td> 要求輸出包含本地專屬的java.text.decimalFormatSymbols#getGroupingSepacator 群組分隔符,如本地化演算法「group」部分所述。
<tr><th scope=“row” style=“vertical-align:top”>'('<td style=“vertical-align:top”>'\u0028'<td> 要求輸出在負值前加上'('一個('\u0028')並加上')'一個()。'\u0029'
</tbody></表格>
若未標示「intdFlags」>標誌,預設格式如下:
<UL>
<li> 輸出在 liwidth 內右對齊<> 負數以 ('-') 開頭'\u002d'
<li> 正數與零不包含符號或額外的前導空格
<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> 要求輸出格式為整數,進位為八。 不進行本地化。
若 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> 大寫變體。'x' 代表該數字的整串字串會被轉換成 String#toUpperCase(大寫),包括'x'(如有)及所有十六進位數字'a' - 'f'()。'\u0061' - '\u0066'
</tbody></表格>
若換算為 、 或 ,且同時給出 與 'o''x' 標誌,則結果將包含基本指示符('X'八進制 與 '#' 或 '0' 用於十六進制)、若干零(基於寬度)及值。'0'"0x""0X"
如果 '0' 標記為負,則零填充會在符號之後出現。
若 '-' 未標示旗幟,則空格填充會在標誌之前出現。
所有定義為位元組、短、整數和長的旗標皆適用。 當沒有標記時,預設行為與位元組、短、整數和長相同。
寬度的規格與位元組、短、整數和長的定義相同。
精確度不適用。 若指定精度,則會拋出 。IllegalFormatPrecisionException
「dndec」><b> 浮動與雙重</b>
以下轉換可應用於 float、 Float、 doubleDouble和 。
<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> 要求輸出格式化為「scientific」>電腦化科學記號。 並應用本地化演算法。
星等 m 的格式化取決於其數值。
若 m 是 NaN 或無限大,則分別輸出字串「NaN」或「Infinity」。 這些數值並非局限性。
若 m 為正零或負零,則指數為 "+00"。
否則,結果是一串字串,代表參數的符號與大小(絕對值)。 符號的格式化在本地化演算法中描述。 星等 m 的格式化取決於其數值。
設 'e'),接著是指數符號,最後是 n 以十進位整數表示, 由方法 Long#toString(long, int)產生,且零填充至少包含兩位數。
m 或a 的分數部分結果中的位數數等於精確度。 若未指定精度,則預設值為 6。 若精度低於字串中Float#toString(float)Double#toString(double)小數點後的數字數,則使用 java.math.RoundingMode#HALF_UP 半向上捨整演算法進行四捨五入。 否則,可以加上零來達到精確度。 對於該值的標準表示,請使用 Float#toString(float) 或 Double#toString(double) 視情況而定。
如果 ',' 旗幟被給予,則會投擲 a FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'E'<td style=“vertical-align:top”>'\u0045'<td> 大寫變體。'e' 指數符號為大寫、特定於當地的 java.text.DecimalFormatSymbols#getExponentSepacator 指數分隔符(例如 '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。
如果 '#' 旗幟被出示,則會投擲 A FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'G'<td style=“vertical-align:top”>'\u0047'<td> 大寫變體。'g'
<tr><th scope=“row” style=“vertical-align:top”>'f'<td style=“vertical-align:top”>'\u0066'<td> 要求輸出格式為「decimal」十>進位格式。 並應用本地化演算法。
結果是一串字串,代表參數的符號與大小(絕對值)。 符號的格式化在本地化演算法中描述。 星等 m 的格式化取決於其數值。
若 m 為 NaN 或無限,則輸出字串「NaN」或「Infinity」。 這些數值並非局限性。
大小格式化為 m 的整數部分,無前置零,後接十進位分隔符,再接一個或多個代表 m 小數部分的小數數字。
m 或a 的分數部分結果中的位數數等於精確度。 若未指定精度,則預設值為 6。 若精度低於字串中Float#toString(float)Double#toString(double)小數點後的數字數,則使用 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>
<如果> 值是 NaN 或無限,則會分別輸出字面字串「NaN」或「Infinity」。
<li> 若 m 為零,則由字串 "0x0.0p0"表示。
<li> 若 m 是 double 具有正規化表示的值,則使用子串來表示顯著數域與指數域。 顯著數由字元 "0x1." 表示,接著是該符號其餘部分的十六進位表示,作為分數。 指數以 'p' ('\u0070')表示,後接無偏指數的十進位串,就像對指數值調用 Integer#toString(int) Integer.toString 所得一樣。 若指定精確度,則將數值四捨五入至指定的十六進位數字數。
<li> 若 m 是 double 具有次正規表示的值,則除非精確度指定在 1 到 12 範圍內,否則 significand 由字元 '0x0.' 後接 significand 其餘部分的十六進制分數表示,以及指數 'p-1022'表示 。 若精度在區間 [1, 12],次正規值被正規化,使其以字元 '0x1.'開始,四捨五入至精度十六進位位數,並相應調整指數。 請注意,次正規顯著值中必須至少有一個非零數字。
</ul>
若'('','標示或,則會擲出 aFormatFlagsConversionMismatchException。
<tr><th scope=“row” style=“vertical-align:top”>'A'<td style=“vertical-align:top”>'\u0041'<td> 大寫變體。'a' 代表該數字的整串字串將被轉換為大寫,包括 'x' () 和 '\u0078' ('p',以及所有十六進位數字'\u0070''a' - ('f''\u0061' - )。'\u0066'
</tbody></表格>
所有定義為位元組、短、整數和長的旗標皆適用。
如果 '#' 標示了旗標,那麼十進位分隔符就會一直存在。
若未標示「floatdFlags」>標誌,預設格式如下:
<UL>
<li> 輸出在 liwidth 內右對齊 <>負數以 li'-' 開頭 <>正數與正零不包含符號或額外前導空格
<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 的格式化取決於其數值。
設 'e' ('\u0065'),再是指數符號,最後是 n 以十進位整數表示,依法 Long#toString(long, int)由 得到, 零填充,至少包含兩位數。
m 或a 的分數部分結果中的位數數等於精確度。 若未指定精度,則預設值為 6。 若精度低於小數點右側的位數,則會使用 java.math.RoundingMode#HALF_UP 半向上取整演算法進行四捨五入。 否則,可以加上零來達到精確度。 對於該值的典範表示,請使用 BigDecimal#toString()。
如果 ',' 旗幟被給予,則會投擲 a FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'E'<td style=“vertical-align:top”>'\u0045'<td> 大寫變體。'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。
如果 '#' 旗幟被出示,則會投擲 A FormatFlagsConversionMismatchException 。
<tr><th scope=“row” style=“vertical-align:top”>'G'<td style=“vertical-align:top”>'\u0047'<td> 大寫變體。'g'
<TR><TH scope=“row” style=“vertical-align:top”td>'f'< style=“vertical-align:top”>'\u0066'<td> 要求輸出必須使用 “bdecimal”> 十進位格式。 並應用本地化演算法。
結果是一串字串,代表參數的符號與大小(絕對值)。 符號的格式化在本地化演算法中描述。 星等 m 的格式化取決於其數值。
大小格式化為 m 的整數部分,無前置零,後接十進位分隔符,再接一個或多個代表 m 小數部分的小數數字。
m 或a 的分數部分結果中的位數數等於精確度。 若未指定精度,則預設值為 6。 若精度低於小數點右側的位數,則會使用 java.math.RoundingMode#HALF_UP 半向上取整演算法進行四捨五入。 否則,可以加上零來達到精確度。 對於該值的典範表示,請使用 BigDecimal#toString()。
</tbody></表格>
所有定義為位元組、短、整數和長的旗標皆適用。
如果 '#' 標示了旗標,那麼十進位分隔符就會一直存在。
當沒有標示時,預設行為與 Float 和 Double 相同。
寬度與精度的規格與浮點與雙重的定義相同。
<h3>“ddt”>日期/時間</h3>
此轉換可應用於 、 、 ,long以及LongCalendar table class=“striped”captionDateTemporalAccessor TemporalAccessor style=“display:none”DTConv<>/caption<>tbody <><>
<TR><TH scope=“row” style=“vertical-align:top”>'t'<td style=“vertical-align:top”>'\u0074'<td> 日期與時間轉換字元的前綴。
<tr><th scope=“row” style=“vertical-align:top”>'T'<td style=“vertical-align:top”>'\u0054'<td> 大寫變體。't'
</tbody></表格>
以下定義了與轉換的日期與時間字尾'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> 24 小時制的一天中小時,格式為兩位數,必要時先加零,即 00 - 23。 00 對應午夜。
<tr><th scope=“row” style=“vertical-align:top”>'I'<td style=“vertical-align:top”>'\u0049'< td> 12 小時制時鐘,格式為兩位數字,必要時先加零,即 。 01 - 12
01 時間約為凌晨一點(上午或下午)。
<TR><TH scope=“row” style=“vertical-align:top”>'k'<td style=“vertical-align:top”>'\u006b'<td> 24 小時制的一天中小時,也就是 0 - 23。 0 對應午夜。
<tr><th scope=「row」style=“vertical-align:top”>'l'<td style=“vertical-align:top”>'\u006c'< td> 12小時制的整點,即 1 - 12. 1 對應一點鐘(上午或下午)。
<tr><th scope=“row” style=“vertical-align:top”>'M'<td style=“vertical-align:top”>'\u004d'< td> 小時內的分鐘,格式為兩位數,必要時前加零,即 。 00 - 59
<tr><th scope=“row” style=“vertical-align:top”>'S'<td style=“vertical-align:top”>'\u0053'<td> 分鐘內的秒數,格式為兩位數,必要時前置零,即 00 - 60 (“60”是支援閏秒所需的特殊值)。
<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> 秒內的納秒,格式為九位數字,必要時先加零,即 。 000000000 - 999999999此數值的精確度受底層作業系統或硬體解析度的限制。
<tr><th scope=“row” style=“vertical-align:top”>'p'<td style=“vertical-align:top”>'\u0070'<td> Locale-specific-java.text.DateFormatSymbols#getAmPmStrings 早晨或下午小寫標記,例如“”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 風格的數值時區偏移,與 GMT 不同,例如 。 -0800 此數值將根據夏令時間調整。 對於 long、 Long,以及Date所使用的時區是 這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。
<tr><th scope=“row” style=“vertical-align:top”>'Z'<td style=“vertical-align:top”>'\u005a'< td> 一串代表時區縮寫的字串。 此數值將根據夏令時間調整。 對於 long、 Long,以及Date所使用的時區是 這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。 Formatter 的 locale 會取代論證的 locale(如果有的話)。
<tr><th scope=“row” style=“vertical-align:top”>'s'<td style=“vertical-align:top”>'\u0073'< td> 自 1970 00:00:00 年 1 月 1 日 UTC 開始的紀元開始數秒,即 。Long.MIN_VALUE/1000Long.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 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 月份名稱縮寫,例如 "Jan", , "Feb"
<tr><th scope=“row” style=“vertical-align:top”>'h'<td style=“vertical-align:top”>'\u0068'<td> 與 .'b'
<tr><th scope=“row” style=“vertical-align:top”>'A'<td style=“vertical-align:top”>'\u0041'<td> java.text.DateFormatSymbols#getWeekdays day of the week of the weeks, e.g. "Sunday", "Monday"<tr><th scope=“row” style=“vertical-align:top”>'a'<td style=“vertical-align:top”>'\u0061'< td> java.text.DateFormatSymbols#getShortWeekdays 的全名,例如 "Sun", tr"Mon"<><th scope =“row” style=“vertical-align:top”>'C'<td style=“vertical-align:top”>'\u0043'< td> 四位數年份除以 100,格式化為兩位數,前導為零,如 00 - 99<tr><th scope =“row” style=“vertical-align:top”>'Y'<td style=“vertical-align:top”>'\u0059'< td> 年份,格式化為至少四位數並必要前置零,例如 009292格里曆的 CE。
<tr><th scope=“row” style=“vertical-align:top”>'y'<td style=“vertical-align:top”>'\u0079'<td> 年份的最後兩位數字,必要時以前置零格式化,即 。 00 - 99
<TR><TH scope=“row” style=“vertical-align:top”>'j'<td style=“vertical-align:top”>'\u006a'<td> 年中日期,格式為三位數,前置零以示必要,例如001 - 366格里曆。
001 這對應於新年的第一天。
<TR><TH scope=“row” style=“vertical-align:top”td>'m'< style=“vertical-align:top”>'\u006d'<td> 月份,格式為兩位數,前置零,01 - 13即 ,其中「01」為一年的第一個月份,(“13” 為支持農曆所需的特殊值)。
<TR><TH scope=“row” style=“vertical-align:top”td>'d'< style=“vertical-align:top”>'\u0064'< td> 月份的日期,格式為兩位數字,必要時先加零,即 01 - 31,其中「“01 為每月的第一天。
<TR><TH scope=“row” style=“vertical-align:top”>'e'<td style=“vertical-align:top”>'\u0065'< td> 月份的日期,格式為兩位數,即 1 - 31 「1」為月份的第一天。
</tbody></表格>
以下轉換字元用於格式化常見的日期/時間組合。
<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> 24 小時制時間格式化為"%tH:%tM"< tr><th scope =“row” style=“vertical-align:top”td style=“vertical-align:top”>'T'< td style=“vertical-align:top”>'\u0054'< td> 24 小時制時間格式化為 。"%tH:%tM:%tS"
<TR><TH scope=“row” style=“vertical-align:top”>'r'<td style=“vertical-align:top”>'\u0072'<td> 12小時制時間格式化為 。"%tI:%tM:%tS %Tp" 上午或下午標記'%Tp'()的位置可能依地區而異。
<tr><th scope=“row” style=“vertical-align:top”>'D'<td style=“vertical-align:top”>'\u0044'<td> 日期格式為 。"%tm/%td/%ty"
<TR><TH scope=“row” style=“vertical-align:top”td>'F'< style=“vertical-align:top”>'\u0046'<td> ISO 8601 完整日期格式為 。"%tY-%tm-%td"
<TR><TH scope=“row” style=“vertical-align:top”>'c'<td style=“vertical-align:top”>'\u0063'<td> 日期與時間格式為 "%ta %tb %td %tT %tZ %tY",例如 。 "Sun Jul 20 16:17:00 EDT 1969"
</tbody></表格>
'-'適用於一般轉換的旗標適用。 如果 '#' 旗子被給出,則會擲出A FormatFlagsConversionMismatchException 。
寬度是寫入輸出的最小字元數。 若轉換後的值長度小於 , width 則輸出會被空格'\u0020'填充(),直到字元總數等於寬度。 墊片預設在左側。 如果 '-' 旗幟被標示,襯墊會在右側。 若未指定寬度,則不存在最小寬度。
精確度不適用。 若指定精度,則會拋出 。IllegalFormatPrecisionException
<h3>“dper”>Percent</h3>
轉換不對應任何論點。
<table class=“striped”><caption style=“display:none”DTConv></caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'%'<td> 結果為一個字面()'%''\u0025'
寬度是要寫入輸出的最小字元數,包括 '%'。 若轉換後的值長度小於 , width 則輸出會被空格'\u0020'填充(),直到字元總數等於寬度。 襯墊在左邊。 若未指定寬度,則僅 '%' 輸出 。
'-'適用於一般轉換的旗標適用。 若提供其他旗幟,則會投擲A IllegalFormatFlagsException 旗。
精確度不適用。 若指定 IllegalFormatPrecisionException 精度,則會擲出。
</tbody></表格>
<h3>“DLS”> 線分隔器</h3>
轉換不對應任何論點。
<table class=“striped”><caption style=“display:none”DTConv></caption><tbody>
<TR><TH scope=“row” style=“vertical-align:top”>'n'<td> 平台專用的線分隔符,System#lineSeparator()由 .
</tbody></表格>
旗幟、寬度和精確度則不適用。 若提供 IllegalFormatFlagsException,則分別擲出 、 IllegalFormatWidthExceptionIllegalFormatPrecisionException和 。
<h3>“dpos”>Argument Index</h3>
格式規範符可以用三種方式引用參數:
<UL>
<li> 當格式指定符包含參數索引時,會使用明確索引。 參數索引是一個十進位整數,表示參數在參數列表中的位置。 第一個論點以「1$」表示,第二個以「2$」表示,依此類推。一個論點可以被多次引用。
例如:
<引用>
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"
</區塊引用>
<當>格式指定符包含 ('<') 標誌,導致重複使用前一個格式規範符的參數時,則使用相對'\u003c'。 若無先前的參數,則拋出 a MissingFormatArgumentException 。
<引用>
formatter.format("%s %s %<s %<s", "a", "b", "c", "d")
// -> "a b b b"
// "c" and "d" are ignored because they are not referenced
</區塊引用>
<當>格式指定符既不包含參數、索引,也不含旗標時,使用'<'。 每個使用普通索引的格式指定符都會被分配一個序列隱含索引進入參數列表,該索引獨立於顯式或相對索引所使用的索引。
<引用>
formatter.format("%s %s %s %s", "a", "b", "c", "d")
// -> "a b c d"
</區塊引用>
</ul>
可以有一個格式字串同時使用所有索引形式,例如:
<引用>
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
</區塊引用>
最大參數數受限於 Java 陣列的最大維度,該維度由 <>Java 虛擬機規範</引用>所定義。 若參數索引不對應可用參數,則拋出 a MissingFormatArgumentException 。
如果參數數量多於格式指定符,額外的參數會被忽略。
除非另有說明,將參數傳給 null 本類別中的任何方法或構造子都會拋出 a NullPointerException 。
已在1.5中新增。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
| 名稱 | Description |
|---|---|
| Formatter() |
建立一個新的格式化器。 |
| Formatter(File, Charset, Locale) |
建立一個包含指定檔案、字元集和位置的新格式化器。 |
| Formatter(File, String, Locale) |
建立一個包含指定檔案、字元集和位置的新格式化器。 |
| Formatter(File, String) |
用指定的檔案和字元集建構一個新的格式化器。 |
| Formatter(File) |
用指定的檔案建立一個新的格式化器。 |
| Formatter(IAppendable, Locale) |
建立一個包含指定目的地與地點的新格式化器。 |
| Formatter(IAppendable) |
建立一個新的格式化器,並指定目的地。 |
| Formatter(Locale) |
用指定的地點建立一個新的格式化器。 |
| Formatter(PrintStream) |
用指定的列印串流建立一個新的格式化器。 |
| Formatter(Stream, Charset, Locale) |
建立一個新的格式化器,包含指定的輸出串流、字元集和位置。 |
| Formatter(Stream, String, Locale) |
建立一個新的格式化器,包含指定的輸出串流、字元集和位置。 |
| Formatter(Stream, String) |
建立一個新的格式化器,包含指定的輸出串流與字元集。 |
| Formatter(Stream) |
建立一個包含指定輸出串流的新格式化器。 |
| Formatter(String, Charset, Locale) |
建立一個包含指定檔名、字元集與區域的新格式化器。 |
| Formatter(String, String, Locale) |
建立一個包含指定檔名、字元集與區域的新格式化器。 |
| Formatter(String, String) |
建立一個包含指定檔案名稱與字元集的新格式化器。 |
| Formatter(String) |
建立一個以指定檔名的新格式化器。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| JniPeerMembers |
一個用於 printf 風格格式字串的直譯器。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
方法
| 名稱 | Description |
|---|---|
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Close() |
關閉這個格式化器。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| Equals(Object) |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| 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) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
一個用於 printf 風格格式字串的直譯器。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
一個用於 printf 風格格式字串的直譯器。 |
擴充方法
| 名稱 | Description |
|---|---|
| FlushAsync(IFlushable) |
一個用於 printf 風格格式字串的直譯器。 |
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個用於 printf 風格格式字串的直譯器。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |