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><>AD1+</td><tr><th scope=“row”y<>td>Year td Year<< td;<96>>1996<td>1+</td<>tr><th scope=“row”><Ytd>Week year td Year<< td td; 09<>>2009td>24+</td><tr<>th scope=“row”><Mtd>Month in year (context sensitive) <td Month<td; 07Jul<>>Julytd>1+</td<>tr<>th scope=“row”><Ltd>Month in year (独立形式) <td Month<td; 07Jul<>>Julytd>TBD</td><tr><th scope=“row”><wtd>Week in year <td><td td27><>1+</td<>tr<>th scope=“row”><Wtd>Week in month <><td td td<>2>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><>101+</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”<>utd>Day number of week (1 = Monday, ..., 7 = Sunday) <td>Number<td td<>1>24+</td<>tr<>th scope=“row”<>>atd Am/pm marker <>td Text<td td td>PM<>1+</td tr<>th scope=“row”<>Htd><>天中的小时(0-23) td Number td td>>0<1+</td><tr<>th scope=“row”><ktd>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>><01+</td><tr<>th scope=<><“row”>h<td>Hour in am/pm (1-12) <td>Number<td td><>121+</td<>tr th scope=“row”<>mtd>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”><ztd>Time zone <td 常规时区<td; GMT-08:00PST<>>Pacific Standard Timetd>1+</td><tr<>th scope=“row”<Z>td>Time zone td>RFC 822 time zone <<td td>>-0800<1+</td><tr><th scope=“row”<>Xtd>Time zone <td>ISO 8601 time zone<td; -0800<-08:00>-08td>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 PMtr><th scope=“row”>"hh 'o''clock' a, zzzz"<td>12 o'clock PM, Pacific Daylight Time<tr th scope=“row”td><0:08 PM, PDTtr><><th scope=“row"K:mm a, z"><”><"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 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:00tr><th scope=“row”><"YYYY-'W'ww-u"td>2001-W27-3</tbody></table></blockquote>
<h3>“synchronization”>Synchronization</h3>
日期格式未同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问格式,则必须在外部同步。
在 1.1 中添加。
Java文档java.text.SimpleDateFormat。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
构造函数
| 名称 | 说明 |
|---|---|
| SimpleDateFormat() |
|
| SimpleDateFormat(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
| SimpleDateFormat(String, DateFormatSymbols) |
使用给定的模式和日期格式符号构造一个 |
| SimpleDateFormat(String, Locale) |
使用给定模式和给定区域设置的默认日期格式符号构造一个 |
| SimpleDateFormat(String) |
|
字段
| 名称 | 说明 |
|---|---|
| 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, StringBuffer, FieldPosition) |
将给定 |
| Format(Date) |
将 a |
| Format(Object, StringBuffer, FieldPosition) |
将给定 |
| Format(Object) |
设置对象的格式以生成字符串。 (继承自 _Format) |
| FormatToCharacterIterator(Object) |
设置生成 . 的对象 |
| Get2DigitYearStart() |
返回 100 年期间 2 位数年份的开始日期解释为内部。 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| Parse(String, ParsePosition) |
分析字符串中的文本以生成一个 |
| Parse(String) |
分析给定字符串开头的文本以生成日期。 (继承自 DateFormat) |
| ParseObject(String, ParsePosition) |
分析字符串中的文本以生成一个 |
| ParseObject(String) |
分析给定字符串开头的文本以生成对象。 (继承自 _Format) |
| 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, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.DisposeUnlessReferenced() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniManagedPeerState |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |