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 是一個具體類別,用於以區域敏感的方式格式化與解析日期。 它允許格式化(日期與rarr;文字)、語法分析(文字與rarr;日期)及正規化。
SimpleDateFormat 讓你可以從使用者自訂的日期-時間格式模式開始。 不過,建議你建立一個日期時間格式化器,格式為 getTimeInstance、 getDateInstance,或 getDateTimeInstance 在 DateFormat中。 這些類別方法中,每個都能回傳一個以預設格式模式初始化的日期/時間格式化器。 你可以依 applyPattern 照需要使用這些方法修改格式模式。 欲了解更多使用這些方法的資訊,請參見 DateFormat。
<h2>日期與時間模式</h2>
日期與時間格式由 <em>日期與時間模式</em> 字串指定。 在日期與時間模式串中,從 'A' to 'Z' 和 to 'a''z' 的未引號字母被解讀為代表日期或時間字串組成部分的模式字母。 文字可使用單引號(')來引用以避免被誤解。
"''" 代表單一引言。 其他角色則不被解讀;它們會在格式化時複製到輸出字串,或在解析時與輸入字串匹配。
定義了以下模式字母(從 到 'A' 及 到 'Z' 的所有'a'其他字'z'元保留):<blockquote><table class =“striped”><caption style=“display:none”> 圖表顯示模式字母、日期/時間成分、呈現方式及範例。</caption thead><tr><th scope=“col” style=“text-align:left”>Letter <th scope=“col” style=“text-align:left”>日期或時間 組件 <th scope=“col” style=“text-align:left”>Presentation <th scope=“col” style=“text-align:left”>範例 <th scope=“col” style=“text-align:left”> 支援(API 層級) </thead><tbody><tr><th scope=“row”><>td 時代G<>指定符 <TD>文字<TD>AD<TD>1+</td><tr><th scope=“row”>y< td>年份 <TD>年份<td;>199696<td>1+</td><tr><th scope=“row”td>Y<> 週 td 年份 <td>年<td;>200909<td 24+/td><tr><th scope = “row”td><>M 年度月份(情境相關) <td><每月 td>; <>JulyJul07<td>1+</td><tr><th scope = “row”>L< td>年中月份(獨立形式) <td><每月 td; >JulyJul07<計數>待定</計時><tr><th scope=“row”>w< td>年<數 週數><td>27<td>1+</td><tr><th scope=“row”>W< td>月數 週<數 ><td>2<>1+/td tr th scope = “row” td 年數 td 數 td 1+</td><tr><th scope = “row”>D< td>年<數 數><td>189<TD>1+</TD><tr><th scope=“row”>d< td>每月 <天數 td><>10數字<dt 1>+</td><tr><th scope = “row”>F< td>每月星期 <TD>數字<dt>2<1>+</td><tr><th scope = “row”>E< td>週名 <TD 文字><TD>Tuesday;tdTue1+</td><tr><th scope=“row”><> tdu星期數 (1 = Monday, ..., 7 = Sunday) <td>編號<td><>241+</td><tr><th scope =“row”><> tda上午/下午標記 <td>文字<td><>PMtd 1+</td><tr><th scope=“row”><>td dtH<>白天小時數(0-23)<計時><數 計數 計>0<時數 1>+</td><tr><視波=「row」>k<td>白天時數 (1-24) <計時><數 計時>24<數 1>+</td><tr><視波器=「row」>K<td dd>上午/下午時數 (0-11) <>計<時數 計數>0<1>+</td><tr><th 示波器=「row」>h<td>上午/下午(1-12)<達><陣數 計時數 計>12<時數 1>+</td><tr><scope =“row”>m< td>一小時<內 計>時數<計時數 td>30<>1+</td><tr><th scope=“row”>s< td>第二分鐘 <計時><>55<數 計時>數 1+</td><翻譯><th scope=“row”>S< td>毫秒 <td>編號<td>978<>1+</td><tr><th scope=“row”>z<td>時區 <td>一般時區<td; >Pacific Standard TimePSTGMT-08:00<TD>1+</TD><tr><th scope=“row”>Z< td>時區 <td>RFC 822 時區<TD>-0800<TD>1+</td><tr><th scope = “row”td>X<> 時區 <td>ISO 8601 時區<TD; >-08-0800-08:00<td 24+>/td<>/tbody<>/table<>/blockquote< 圖案字母通常會重複使用,因為它們的數字決定了精確的呈現方式:>ul<>li<strong><“text”Text>:>/strong< 為了格式化,若圖案字母數量為4個或以上,則使用完整形式;否則若有,則使用簡短或縮寫的形式。> 在解析中,兩種形式皆可接受,與模式字母的數量無關。</li><li><strong>」數字> 數字:</strong> 為了格式化,圖案字母的數量是最小數字數,較短的數字則為零填充。 在解析時,除非需要分隔兩個相鄰欄位,否則不會忽略模式字母的數量。</li>li strong「年份」<年份:></strong>。如果格式者>是格里曆,則適用以下規則。<>#getCalendar() Calendar
<ul><li>格式化時,若字母數為2,年份會被截斷為2位數;否則則解讀為數字。
<在>解析中,若模式字母數超過2,年份會字面解釋,不論數字數。 因此,利用「MM/dd/yyyy」這個模式,「01/11/12」可以解析到公元1月11日、12年。 <li>要用縮寫年份模式(「y」或「yy」)進行解析, SimpleDateFormat 必須將縮寫年份相較於某個世紀來解釋。 它會將日期調整為建立實例前 80 年與後 20 年 SimpleDateFormat 之間。 例如,使用「MM/dd/yy」的模式並於 1997 年 1 月 1 日建立的 SimpleDateFormat 實例,字串「01/11/12」會被解讀為 2012 年 1 月 11 日,而字串「05/04/64」則會被解讀為 1964 年 5 月 4 日。 在解析過程中,只有由 定義 Character#isDigit(char)的恰好兩位數組成的字串會被解析入預設的世紀。 任何其他數字字串,例如一位數字串、三位數以上字串,或非全數數字的兩位數字串(例如「-1」),皆被字面解釋。 因此,「01/02/3」或「01/02/003」的解析方式與公元3年1月2日相同。 同樣地,「01/02/-3」被解析為公元前4年1月2日。
</ul> 否則,則會套用日曆系統特定的表格。 無論是格式化還是解析,如果模式字母數量為4個或以上,則會使用日曆專用的Calendar#LONG長表。 否則,則使用日曆專用的 Calendar#SHORT 短或縮寫形式。
<br> 若指定週年 'Y' 且 #getCalendar()曆法不支援任何週年,則改用日曆年('y')。 一週的年支持可以用呼喚DateFormat#getCalendar() getCalendar()來檢驗......java.util.Calendar#isWeekDateSupported() isWeekDateSupported()</li><li><strong>「月份」>月份:</strong>。若圖案字母數量為3個或以上,則視為文字;否則,則視為數字。
<ul><li>字母 <em>M</em> 產生情境相關的月份名稱,例如名字的嵌入形式。 字母 <em>M</em> 具有上下文敏感性,當它在獨立模式中使用時,例如「MMMM」,會顯示月名的獨立形式;而在包含其他欄位的模式中,例如「d MMMM」,則會顯示月名的格式形式。 例如,加泰隆尼亞語中的 January 在格式形式中為「de gener」,而在獨立形式中則為「gener」。 在這種情況下,「MMMM」會產生「gener」,而「d MMMM」的月份部分會產生「de gener」。 若 a DateFormatSymbols 已明確以建構子#SimpleDateFormat(String,DateFormatSymbols)或方法#setDateFormatSymbols(DateFormatSymbols)設定,則使用由 DateFormatSymbols 所給出的月份名稱。</li><li>字母 <em>L</em> 產生獨立的月份名稱形式。</li></ul><br></li><li 強><>“時區”> 一般時區:</強>時區若有名稱,則會被解讀為文字。 對於代表 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 標準的 Basic Latin 區塊。
在解析方面,也接受 RFC 822 時區。</li><li strong><>“RFC822timezone”RFC> 822 時區:</strong> 格式方面,使用 RFC 822 四位數時區格式:
<i>RFC822TimeZone:</i>
<i>Sign</i> <i>TwoDigitHours</i> <i>Minutes</i>
<i>TwoDigitHours:</i>
<i>Digit Digit</i>
兩位數小時 必須介於00到23之間。 其他定義則類似一般時區。
在解析時,也接受一般時區。 <li><strong>「iso8601timezone」>ISO 8601 時區:</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>不<接受或> em 接受。
若圖案字母數 "X" 為4個或以上(例如 XXXX), IllegalArgumentException 則在構造 SimpleDateFormat 一個或 #applyPattern(字串)套用圖案時會拋出。
</ul>SimpleDateFormat 也支援 <EM>本地化的日期與時間模式</EM> 字串。 在這些字串中,上述的模式字母可以被其他、依地區而異的模式字母取代。
SimpleDateFormat 不處理除圖案字母外文字的本地化;這要看課程的客戶自己決定。
<h3>範例</h3>
以下範例展示了美國地區如何解讀日期與時間模式。 所給日期與時間為美國太平洋時區2001年7月4日12:08:56當地時間。
<blockquote table class=“striped”caption>< style=“display:none”> 美國地區/caption 解釋日期與時間模式範例 locale</caption><thead><tr><th scope=“col” style=“text-align:left”> Date and Time Pattern <th scope=“col” style=“text-align:left”> 結果 </thead><tbody><tr><th scope=“row”td><>tr"yyyy.MM.dd G 'at' HH:mm:ss z"<th scope =“row”>2001.07.04 AD at 12:08:56 PDT<><>"EEE, MMM d, ''yy"<TD>Wed, Jul 4, '01<TR>TH scope=“row”<>"h:mm a"TD<>12:08 PMtr<>th scope=“row”<>"hh 'o''clock' a, zzzz"td<>12 o'clock PM, Pacific Daylight Timetr<>th scope=“row”td tr th scope=“row”<>"K:mm a, z" td<>0:08 PM, PDTtr<>th scope=“row”<>"yyyyy.MMMMM.dd GGG hh:mm aaa" td<>02001.July.04 AD 12:08 PMtr<>th scope=“row”<>"EEE, d MMM yyyy HH:mm:ss Z" td<>Wed, 4 Jul 2001 12:08:56 -0700tr th scope=“row” td<>tr<>th scope =“row”"yyMMddHHmmssZ"<>010704120856-0700<><>t."yyyy-MM-dd'T'HH:mm:ss.SSSZ"<>2001-07-04T12:08:56.235-0700<翻譯><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>「同步」同步/><h3>
日期格式並不同步。 建議為每個執行緒建立獨立格式實例。 若多個執行緒同時存取同一格式,必須在外部同步。
在 1.1 版本中加入。
Java 文件 java.text.SimpleDateFormat。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| SimpleDateFormat() |
利用預設模式與日期格式符號來構建預設 |
| SimpleDateFormat(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
| SimpleDateFormat(String, DateFormatSymbols) |
利用給定的模式與日期格式符號構造 a |
| SimpleDateFormat(String, Locale) |
利用給定模式及該地點的預設日期格式符號構建 a |
| SimpleDateFormat(String) |
利用給定模式及預設 |
欄位
| 名稱 | Description |
|---|---|
| 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 |
對於零基小時場對齊非常有用的常數。 (繼承來源 DateFormat) |
| Hour1Field |
對於一基數小時的場對齊非常有用的常數。 (繼承來源 DateFormat) |
| HourOfDay0Field |
對於零基HOUR_OF_DAY場對齊非常有用的常數。 (繼承來源 DateFormat) |
| HourOfDay1Field |
對於一基HOUR_OF_DAY場對齊非常有用的常數。 (繼承來源 DateFormat) |
| Long |
長型圖案是固定的。 (繼承來源 DateFormat) |
| Medium |
中等款式的圖案是固定的。 (繼承來源 DateFormat) |
| MillisecondField |
對於毫秒場對齊非常有用的常數。 (繼承來源 DateFormat) |
| MinuteField |
對於分鐘場對準來說非常有用的常數。 (繼承來源 DateFormat) |
| MonthField |
對於 MONTH 場比對很有用的常數。 (繼承來源 DateFormat) |
| SecondField |
對於第二場對準來說是有用的常數。 (繼承來源 DateFormat) |
| Short |
短款圖案是固定的。 (繼承來源 DateFormat) |
| TimezoneField |
這是時區欄位對齊的有用常數。 (繼承來源 DateFormat) |
| WeekOfMonthField |
對於場WEEK_OF_MONTH對齊非常有用的常數。 (繼承來源 DateFormat) |
| WeekOfYearField |
對場對準WEEK_OF_YEAR有用的常數。 (繼承來源 DateFormat) |
| YearField |
這是對年度場對齊的有用常數。 (繼承來源 DateFormat) |
屬性
| 名稱 | Description |
|---|---|
| Calendar |
取得與此日期/時間格式器相關的行事曆。 -或- 設定日曆依照此日期格式使用。 (繼承來源 DateFormat) |
| Class |
回傳此 |
| DateFormatSymbols |
取得此日期格式的日期與時間符號副本。 -或- 設定此日期格式的日期與時間符號。 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Lenient |
說明日期/時間解析是否應該寬鬆。 -或- 指定日期/時間解析是否應寬鬆。 (繼承來源 DateFormat) |
| NumberFormat |
取得這個日期/時間格式化器用來格式化和解析時間的數字格式化器。 -或- 讓你設定數字格式。 (繼承來源 DateFormat) |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| TimeZone |
會知道時區。 -或- 設定此 |
方法
| 名稱 | Description |
|---|---|
| ApplyLocalizedPattern(String) |
將給定的在地模式字串套用到這個日期格式。 |
| ApplyPattern(String) |
將給定的模式字串套用到這個日期格式。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Format(Date, StringBuffer, FieldPosition) |
將給出 |
| Format(Date) |
將 a |
| Format(Object, StringBuffer, FieldPosition) |
將所給的 |
| Format(Object) |
格式化物件以產生字串。 (繼承來源 _Format) |
| FormatToCharacterIterator(Object) |
格式化物件產生 |
| Get2DigitYearStart() |
100年期間的起始日期(兩位數年份)被解釋為在該期限內。 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Parse(String, ParsePosition) |
從字串中解析文字以產生 |
| Parse(String) |
從給定字串的開頭解析文字以產生日期。 (繼承來源 DateFormat) |
| ParseObject(String, ParsePosition) |
從字串中解析文字以產生 |
| ParseObject(String) |
解析給定字串開頭的文字以產生物件。 (繼承來源 _Format) |
| Set2DigitYearStart(Date) |
設定 100 年期間,兩位數年將被解讀為從使用者指定的日期開始。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToLocalizedPattern() |
回傳描述此日期格式的局部模式字串。 |
| ToPattern() |
回傳描述此日期格式的模式字串。 |
| 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() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |