SimpleDateFormat 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
SimpleDateFormat
是以地區設定區分地區設定的方式格式化和剖析日期的具體類別。
[Android.Runtime.Register("java/text/SimpleDateFormat", DoNotGenerateAcw=true)]
public class SimpleDateFormat : Java.Text.DateFormat
[<Android.Runtime.Register("java/text/SimpleDateFormat", DoNotGenerateAcw=true)>]
type SimpleDateFormat = class
inherit DateFormat
- 繼承
- 屬性
備註
SimpleDateFormat
是以地區設定區分地區設定的方式格式化和剖析日期的具體類別。 它允許格式化(date → text)、剖析(text → date),以及正規化。
SimpleDateFormat
可讓您從選擇任何使用者定義的模式開始進行日期時間格式設定。 不過,建議您在 中建立具有 getTimeInstance
、 getDateInstance
或 getDateTimeInstance
的 DateFormat
日期時間格式器。 每個類別方法都可以傳回以預設格式模式初始化的日期/時間格式子。 您可以視需要使用 applyPattern
方法來修改格式模式。 如需使用這些方法的詳細資訊,請參閱 DateFormat
。
<h2>日期和時間模式</h2>
日期和時間格式是由 <em> 日期和時間模式</em> 字串所指定。 在日期和時間模式字串內,從 'A'
來'Z'
回'a'
'z'
無引號的字母會解譯為代表日期或時間字串元件的模式字母。 文字可以使用單引號來加上引號,'
以避免解譯。 "''"
表示單引號。 不會解譯所有其他字元;它們只會在格式化期間複製到輸出字串,或在剖析期間與輸入字串相符。
已定義下列模式字母(從 'A'
到 'Z'
到 'z'
'a'
保留的所有其他字元):<blockquote<>table class=“striped”<>caption style=“display:none”>Chart 顯示模式字母、日期/時間元件、簡報和範例。</caption>thead><tr><th scope=“col” style=“text-align:left”>Letter <th scope=“col” style=“text-align:left”>Date or Time Component <th scope=“col” style=“text-align:left>”Presentation <th scope=“col” style=“text-align>:left”examples <th scope=“col” style=“text-align:left”>Supported (API Levels) </thead><tbody><tr><th scope=“row”>G
<td>Era<設計工具 td>Text<td td><>AD
1+</td<>tr><th scope=“row”><y
td>Year <td;<<>>1996
96
<td>1+</td<>tr><th scope=“row”<>Y
td>Week td Year<< td; 09
<>>2009
td>24+</td tr><th scope=“row”>M
<td<>>Month in year (context sensitive) <td Month<td; 07
Jul
<>>July
td>1+</td><tr><th scope=“row”>L
<td>Month in year (獨立形式) <td Month<td; 07
Jul
<>>July
td>TBD</td><tr><th scope=“row”><w
td>Week in year <td><27
<>>1+</td<><>tr th scope=“row”td>Week in month><><>2
< td 1+</td<>tr><th scope=“row”<<>>D
W
td>Day in year <td>Number<td>189
<td>1+</td<>tr<>th scope=“row”<>d
td>Day in month <td<>>><10
1+</<><>td tr th scope=“row”><F
td>Day in month <>td Number<td2
>><td 1+</td<>tr<>th scope=“row”>E
<td>Day name in week <td Text><td>Tuesday
;Tue
<td>1+</td<>tr<>th scope=“row”<>u
td>Day number of week (1 = Monday, ..., 7 = Sunday) <td>Number<td1
<>td>24+</td<>tr><th scope=“row”>>a
<td Am/pm marker>< td Text<<>>PM
td td 1+</td tr<>th scope=“row”<>H
td><>日中小時 (0-23) td 數位 td td><>0
1+</td<>tr><th scope=“row”k
<>td>Hour in day (1-24) <td><>24
><1+</td<>tr<>th scope=“row”><K
td>Hour in am/pm (0-11)<> td Number<td td0
>><1+</td<>tr><th scope=<><“row”><h
td>Hour in am/pm (1-12) <td>Number<td td>12
><1+</td>><<tr th scope=“row”td Minute in hour>><<>30
< td 1+</td<>tr<>th scope=“row”s
>><m
<td>>Second in minute>< td Number><55
><td 1+</td><tr><th scope=“row”><S
td>Millisecond <td><td978
><>1+</td><tr><th scope=“row”z
<>td>Time zone <td 一般時區<td; GMT-08:00
PST
<>>Pacific Standard Time
td>1+</td<>tr><th scope=“row”Z
<>td>Time zone <td>RFC 822 time<zone td td><>-0800
1+</td tr<>th scope=“row”><X
td><>Time zone>< td ISO 8601 time zone<td; -0800
<-08:00
>-08
td>24+</td></tbody<>/table></blockquote> 圖樣字母通常會重複,因為其數位會決定確切的簡報:<ul<>li><strong“>text:</strong>> For formatting,如果模式字母數目是 4 或更多,則會使用完整窗體;否則,如果有的話,則會使用簡短或縮寫窗體。 為了剖析,會接受這兩種形式,與模式字母數目無關。</li li><><strong>“number:></strong> 對於格式設定,模式字母的數目是最小數位數,而較短的數位會填補到此數量。 為了剖析,除非需要分隔兩個相鄰字段,否則會忽略模式字母的數目。</li><><strong>“year”>Year:</strong> 如果格式器的 #getCalendar() Calendar
是公曆,則會套用下列規則。 <ul><li>針對格式設定,如果模式字母數目為 2,則年份會截斷為 2 位數,否則會解譯為數位。 <li>為了剖析,如果模式字母的數目超過 2,則不論數位數目為何,年份都會以字面方式解譯。 因此,使用模式 「MM/dd/yyyy」、“01/11/12” 剖析為 12 A.D 11 月 11 日。 <li>若要剖析與縮寫年份模式(“y” 或 “yy”), SimpleDateFormat
必須解譯相對於某個世紀的縮寫年份。 其方式是將日期調整為在實例建立后的80年和20年內 SimpleDateFormat
。 例如,使用 「MM/dd/yy」 模式和 SimpleDateFormat
1997 年 1 月 1 日建立的實例,字串 “01/11/12” 會解譯為 2012 年 1 月 11 日,而字符串 “05/04/64” 會解譯為 1964 年 5 月 4 日。 在剖析期間,只有只包含兩個數位的字串,如所 Character#isDigit(char)
定義,將會剖析為預設的世紀。 任何其他數值字串,例如一個數位字串、三個以上的數位字串,或不是所有數位的兩位數位符串(例如,“-1”),會以常值方式解譯。 因此,使用與 3 AD 1 月 2 日相同的模式剖析 “01/02/02/003” 或 “01/02/003”。 同樣地,“01/02/-3”剖析為BC 4年1月2日。 </ul> 否則,會套用行事曆系統特定的窗體。 針對格式化和剖析,如果模式字母數目是 4 或更多,則會使用行事曆特定的 Calendar#LONG 表單。 否則,會使用行事曆特定的 Calendar#SHORT short 或縮寫表單。 <br> 如果指定了周年 'Y'
,且 #getCalendar() 行事曆不支援任何周年,則會改用日曆年 ('y'
)。 您可以透過呼叫 來DateFormat#getCalendar() getCalendar()
java.util.Calendar#isWeekDateSupported() isWeekDateSupported()
測試一周年的支援。</li li>><<strong>“month”>Month:</strong> 如果模式字母數目為 3 或更多,則會將月份解譯為文字;否則,它會解譯為數位。 <ul>li Letter <em>M</em> 會產生上下文相關月份名稱,例如名稱的內嵌形式。>< 字母 <em>M</em> 會區分內容,因為它用於獨立模式時,例如 “MMMM”,它會提供月份名稱的獨立形式,以及當它用於包含其他字段的模式時,例如 “d MMMM”,它會提供月份名稱的格式形式。 例如,在加泰羅尼亞文中的 1 月是格式表單中的 “de gener”,而它是獨立窗體中的 “gener”。 在此情況下,“MMMM” 會產生 “gener”,而 “d MMMM” 的月份部分將會產生 “de gener”。 DateFormatSymbols
如果 已使用建構函式#SimpleDateFormat(String,DateFormatSymbols)
或方法#setDateFormatSymbols(DateFormatSymbols)
明確設定 ,則會使用 所DateFormatSymbols
指定的月份名稱。</li li><>Letter <em>L</em> 會產生月份名稱的獨立形式。</li></ul><br></li li><<>strong>“timezone”>一般時區:</strong> 時區若有名稱,則會解譯為文字。 對於代表 GMT 位移值的時區,會使用下列語法:
<a id="GMTOffsetTimeZone"><i>GMTOffsetTimeZone:</i></a>
{@code GMT} <i>Sign</i> <i>Hours</i> {@code :} <i>Minutes</i>
<i>Sign:</i> one of
{@code + -}
<i>Hours:</i>
<i>Digit</i>
<i>Digit</i> <i>Digit</i>
<i>Minutes:</i>
<i>Digit</i> <i>Digit</i>
<i>Digit:</i> one of
{@code 0 1 2 3 4 5 6 7 8 9}
小時 必須介於 0 到 23 之間,而 分鐘 必須介於 00 到 59 之間。 格式與地區設定無關,而且數位必須取自 Unicode 標準的基本拉丁文區塊。
為了剖析,也會接受 RFC 822 時區。</li strong><><>“rfc822timezone”>RFC 822 時區:</strong> 針對格式設定,會使用 RFC 822 4 位數時區格式:
<i>RFC822TimeZone:</i>
<i>Sign</i> <i>TwoDigitHours</i> <i>Minutes</i>
<i>TwoDigitHours:</i>
<i>Digit Digit</i>
TwoDigitHours 必須介於 00 到 23 之間。 其他定義與一般時區一樣。
為了剖析,也接受一般時區。 <li><strong>“iso8601timezone”>ISO 8601 Time zone:</strong> 模式字母數目會指定格式和剖析的格式,如下所示:
<i>ISO8601TimeZone:</i>
<i>OneLetterISO8601TimeZone</i>
<i>TwoLetterISO8601TimeZone</i>
<i>ThreeLetterISO8601TimeZone</i>
<i>OneLetterISO8601TimeZone:</i>
<i>Sign</i> <i>TwoDigitHours</i>
{@code Z}
<i>TwoLetterISO8601TimeZone:</i>
<i>Sign</i> <i>TwoDigitHours</i> <i>Minutes</i>
{@code Z}
<i>ThreeLetterISO8601TimeZone:</i>
<i>Sign</i> <i>TwoDigitHours</i> {@code :} <i>Minutes</i>
{@code Z}
其他定義適用於一般時區或 RFC 822 時區。
針對格式化,如果 GMT 的位移值為 0, "Z"
則會產生 。 如果模式字母數目為 1,則會忽略一小時的任何分數。 例如,如果模式為 "X"
,且時區為 "GMT+05:30"
, "+05"
則會產生 。
為了剖析,字母 "Z"
會剖析為UTC時區指示項(因此 "09:30Z"
會剖析為 "09:30 UTC"
。 一般時區<>為未<接受/em>。
如果模式字母數目"X"
是 4 或更多,XXXX
IllegalArgumentException
則會在建構SimpleDateFormat
或套用模式的 #applyPattern(String) 時擲回。 </ul>SimpleDateFormat
也支援 <em>本地化的日期和時間模式</em> 字串。 在這些字串中,上述模式字母可能會取代為其他地區設定相依的模式字母。 SimpleDateFormat
不會處理模式字母以外的文字當地語系化;由類別的客戶端決定。
<h3>範例</h3>
下列範例示範在美國地區設定中如何解譯日期和時間模式。 指定的日期和時間是美國太平洋時區的 2001-07-04 12:08:56。 <blockquote><table class=“striped”><caption style=“display:none”>examples of date and time patterns interpreted in the US locale</caption><thead<>tr<>th scope=“col” style=“text-align:left”>Date and Time Pattern <th scope=“col” style=“text-align:left”>Result </thead<>tbody><tr><th scope=“row”><"yyyy.MM.dd G 'at' HH:mm:ss z"
td>2001.07.04 AD at 12:08:56 PDT
<tr<>th scope=“row”>"EEE, MMM d, ''yy"
<td>Wed, Jul 4, '01
<tr>th scope=“row”>"h:mm a"
<td>12:08 PM
<tr><th scope=“row”><"hh 'o''clock' a, zzzz"
td>12 o'clock PM, Pacific Daylight Time
<><tr th scope=“row"K:mm a, z"
><”td><0:08 PM, PDT
<>tr th scope=“"yyyyy.MMMMM.dd GGG hh:mm aaa"
><row”td tr th scope=“row”td<02001.July.04 AD 12:08 PM
>tr th scope=<"yyMMddHHmmssZ"
>“row”"EEE, d MMM yyyy HH:mm:ss Z"
<>td<>Wed, 4 Jul 2001 12:08:56 -0700
tr<>th scope=“row”td><010704120856-0700
tr><><th scope=“row”"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
><td>2001-07-04T12:08:56.235-0700
<<tr><th scope=“row”><"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
td><2001-07-04T12:08:56.235-07:00
tr><th scope=“row”><"YYYY-'W'ww-u"
td>2001-W27-3
</tbody></table></blockquote>
<h3>“synchronization”>Synchronization</h3>
日期格式不會同步處理。 建議為每個線程建立個別的格式實例。 如果多個線程同時存取格式,則必須在外部同步處理。
已在1.1中新增。
的 java.text.SimpleDateFormat
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
SimpleDateFormat() |
|
SimpleDateFormat(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
SimpleDateFormat(String) |
|
SimpleDateFormat(String, DateFormatSymbols) |
|
SimpleDateFormat(String, Locale) |
|
欄位
AmPmField |
AM_PM欄位對齊的實用常數。 (繼承來源 DateFormat) |
DateField |
DATE 欄位對齊的實用常數。 (繼承來源 DateFormat) |
DayOfWeekField |
DAY_OF_WEEK欄位對齊的實用常數。 (繼承來源 DateFormat) |
DayOfWeekInMonthField |
DAY_OF_WEEK_IN_MONTH欄位對齊的實用常數。 (繼承來源 DateFormat) |
DayOfYearField |
DAY_OF_YEAR欄位對齊的實用常數。 (繼承來源 DateFormat) |
Default |
默認樣式模式的常數。 (繼承來源 DateFormat) |
EraField |
ERA 欄位對齊的實用常數。 (繼承來源 DateFormat) |
Full |
完整樣式模式的常數。 (繼承來源 DateFormat) |
Hour0Field |
以零起始 HOUR 字段對齊的實用常數。 (繼承來源 DateFormat) |
Hour1Field |
單一型 HOUR 欄位對齊的實用常數。 (繼承來源 DateFormat) |
HourOfDay0Field |
以零起始HOUR_OF_DAY字段對齊的實用常數。 (繼承來源 DateFormat) |
HourOfDay1Field |
適用於單一型HOUR_OF_DAY字段對齊的實用常數。 (繼承來源 DateFormat) |
Long |
長樣式模式的常數。 (繼承來源 DateFormat) |
Medium |
中樣式模式的常數。 (繼承來源 DateFormat) |
MillisecondField |
毫秒欄位對齊的實用常數。 (繼承來源 DateFormat) |
MinuteField |
MINUTE 欄位對齊的實用常數。 (繼承來源 DateFormat) |
MonthField |
月份欄位對齊的實用常數。 (繼承來源 DateFormat) |
SecondField |
第二個字段對齊的實用常數。 (繼承來源 DateFormat) |
Short |
簡短樣式模式的常數。 (繼承來源 DateFormat) |
TimezoneField |
TIMEZONE 欄位對齊的實用常數。 (繼承來源 DateFormat) |
WeekOfMonthField |
WEEK_OF_MONTH欄位對齊的實用常數。 (繼承來源 DateFormat) |
WeekOfYearField |
適用於WEEK_OF_YEAR欄位對齊的實用常數。 (繼承來源 DateFormat) |
YearField |
YEAR 欄位對齊的實用常數。 (繼承來源 DateFormat) |
屬性
Calendar |
取得與此日期/時間格式子相關聯的行事曆。 -或- 設定此日期格式要使用的行事曆。 (繼承來源 DateFormat) |
Class |
傳回這個 |
DateFormatSymbols |
取得這個日期格式的日期和時間格式符號複本。 -或- 設定此日期格式的日期和時間格式符號。 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
JniIdentityHashCode |
|
JniPeerMembers |
|
Lenient |
告知日期/時間剖析是否為寬大。 -或- 指定日期/時間剖析是否為寬大。 (繼承來源 DateFormat) |
NumberFormat |
取得這個日期/時間格式器用來格式化和剖析時間的數位格式器。 -或- 可讓您設定數位格式器。 (繼承來源 DateFormat) |
PeerReference |
|
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
TimeZone |
取得時區。 -或- 設定此 |
方法
ApplyLocalizedPattern(String) |
將指定的當地語系化模式字串套用至這個日期格式。 |
ApplyPattern(String) |
將指定的模式字串套用至這個日期格式。 |
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 _Format) |
Dispose() |
|
Dispose(Boolean) |
|
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
Format(Date) |
|
Format(Date, StringBuffer, FieldPosition) |
將指定的 |
Format(Object) |
格式化 物件以產生字串。 (繼承來源 _Format) |
Format(Object, StringBuffer, FieldPosition) |
將指定的 |
FormatToCharacterIterator(Object) |
格式化產生的物件 |
Get2DigitYearStart() |
傳回 100 年期間 2 位數年份的開始日期,會解譯為在內。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Parse(String) |
剖析指定字串開頭的文字以產生日期。 (繼承來源 DateFormat) |
Parse(String, ParsePosition) |
剖析字串中的文字以產生 |
ParseObject(String) |
從指定字串的開頭剖析文字,以產生 物件。 (繼承來源 _Format) |
ParseObject(String, ParsePosition) |
剖析字串中的文字以產生 |
Set2DigitYearStart(Date) |
設定使用者指定日期開始的100年期間2位數年份。 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
ToArray<T>() |
|
ToLocalizedPattern() |
傳回描述此日期格式的當地語系化模式字串。 |
ToPattern() |
傳回描述此日期格式的模式字串。 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
|
Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
|
IJavaPeerable.DisposeUnlessReferenced() |
|
IJavaPeerable.Finalized() |
|
IJavaPeerable.JniManagedPeerState |
|
IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
IJavaPeerable.SetPeerReference(JniObjectReference) |
|
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|