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;文本)、分析(文本 → 日期)和规范化。
SimpleDateFormat
允许你首先为日期时间格式选择任何用户定义的模式。 但是,建议你创建一个日期/时间格式化程序,该格式化程序要么 getTimeInstance
是, getDateInstance
要么 getDateTimeInstance
是 DateFormat
。 其中每个类方法都可以返回使用默认格式模式初始化的日期/时间格式化程序。 可以根据需要使用 applyPattern
方法修改格式模式。 有关使用这些方法的详细信息,请参阅 DateFormat
。
<h2>日期和时间模式</h2>
日期和时间格式由 <em>日期和时间模式</em> 字符串指定。 在日期和时间模式字符串中,不带引号的字母从 'A'
中 'Z'
'a'
'z'
解释为表示日期或时间字符串组件的模式字母。 可以使用单引号('
)来引用文本,以避免解释。 "''"
表示单个引号。 不会解释所有其他字符;它们只是在格式化过程中复制到输出字符串中,或者在分析过程中与输入字符串匹配。
定义了以下模式字母(从到'Z'
到保留所有其他字符):<blockquote><table class=“striped”><caption style=“display:none”>Chart 显示模式字母、日期/时间组件、演示文稿和示例。<'z'
'a'
'A'
/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 Year<< td;<96
>>1996
<td>1+</td<>tr><th scope=“row”><Y
td>Week year td Year<< td 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><td td<>27
>1+</td<>tr<>th scope=“row”><W
td>Week in month <<>td td<>2
td>1+</td tr<>th scope=“row”>D
><td><Day in year <>td Number<td td>189
<td>1+</td><tr<>th scope=“row”<d
>td>Day in month <td td<>td><>10
1+</td<>tr th scope=“row”F
><td>Day in month>< td Number<td td td2
<>>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<td td<>1
>24+</td<>tr<>th scope=“row”<>>a
td Am/pm marker <>td Text<td td td>PM
<>1+</td tr<>th scope=“row”<>H
td><>天中的小时(0-23) td Number td td>>0
<1+</td><tr<>th scope=“row”><k
td>Hour in day (1-24) <td>Number<td td>24
<>1+</td<>tr<>th scope=“row”<K
>td>Hour in am/pm (0-11) <>td Number<td>><0
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”<>m
td>Minute in hour <td>30
<><>1+/td<>tr<>><th scope=“row”>s
><td Second in minute <>td Number<td td<55
>1+<</td>><tr><th scope=“row”>S
<td>毫秒 <td><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> 对于格式设置,如果模式字母数为 4 或更多,则使用完整表单;否则使用短格式或缩写形式(如果可用)。 为了进行分析,这两种形式都将被接受,与图案字母的数量无关。</li><><strong“number”>Number:</strong>> 对于格式设置,图案字母数是最小数字数,较短的数字将零填充到此数量。 为了进行分析,除非需要分隔两个相邻字段,否则将忽略模式字母数。</li li><><strong>“year”>Year:</strong> 如果格式化程序#getCalendar() Calendar
是公历,则应用以下规则。 <ul><li>对于格式设置,如果模式字母数为 2,则年份将被截断为 2 位数字;否则将其解释为数字。 <li>对于分析,如果模式字母数超过 2,则无论数字数如何,年份都按字面解释。 因此,使用模式“MM/dd/yy”、“01/11/12”分析到 12 A.D 11 月 11 日。 <li>对于与缩写年份模式(“y”或“y”)进行分析, SimpleDateFormat
必须解释相对于某些世纪的缩写年份。 它通过将日期调整为创建实例之前 SimpleDateFormat
80 年和 20 年后的日期来执行此操作。 例如,使用“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/3”或“01/02/003”。 同样,“01/02/-3”分析为 BC 1 月 2 日。 </ul> 否则,将应用日历系统特定的表单。 对于格式设置和分析,如果模式字母数为 4 个或多个,则使用特定于日历的 Calendar#LONG 长窗体。 否则,将使用特定于日历的 Calendar#SHORT 或缩写窗体。 <br> 如果指定了周年 'Y'
,并且 #getCalendar() 日历不支持任何周年,则改用日历年('y'
)。 可以通过调用 DateFormat#getCalendar() getCalendar()
.java.util.Calendar#isWeekDateSupported() isWeekDateSupported()
来测试周年的支持。</li li>><<strong>“month”>Month:</strong> If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number. <ul><li>Letter <em>M</em> 生成上下文相关的月份名称,例如名称的嵌入形式。 字母 <em>M</em> 是上下文敏感的,因为它在独立模式中使用时,例如“MMMM”,它提供月份名称的独立形式,并在包含其他字段(s)的模式中使用,例如“d MMMM”,它提供月份名称的格式形式。 例如,加泰罗尼亚语中的 1 月是格式形式的“de gener”,而它是独立形式的“gener”。 在这种情况下,“MMMM”将生成“gener”,而“d MMMM”的月份部分将生成“de gener”。 如果已使用构造函数#SimpleDateFormat(String,DateFormatSymbols)
或方法#setDateFormatSymbols(DateFormatSymbols)
显式设置 aDateFormatSymbols
,则使用提供的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 时区:</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(字符串)时引发。 </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”td 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”td><0:08 PM, PDT
tr><><th scope=“row"K:mm a, z"
><”><"yyyyy.MMMMM.dd GGG hh:mm aaa"
td><02001.July.04 AD 12:08 PM
tr><th scope=“row”><"EEE, d MMM yyyy HH:mm:ss Z"
td tr th scope=“row”><"yyMMddHHmmssZ"
td tr th scope=“row”td><>Wed, 4 Jul 2001 12:08:56 -0700
<tr><th scope=“row”"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
<>td td2001-07-04T12:08:56.235-0700
>010704120856-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 对象的托管表示形式时使用的构造函数;由运行时调用。 |
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 |
SECOND 字段对齐的有用常量。 (继承自 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 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
TimeZone |
获取时区。 - 或 - 设置此 |
方法
ApplyLocalizedPattern(String) |
将给定的本地化模式字符串应用于此日期格式。 |
ApplyPattern(String) |
将给定的模式字符串应用于此日期格式。 |
Clone() |
创建并返回此对象的副本。 (继承自 _Format) |
Dispose() |
|
Dispose(Boolean) |
|
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
Format(Date) |
将 a |
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 通知/em> 或 <em>interrupted</em>。<>< (继承自 Object) |
Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</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) |
|