日期和时间模式
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 ''A'' 到 ''Z'' 和 ''a'' 到 ''z'' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 ('') 引起来,以免进行解释。"''''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在分析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 ''A'' 到 ''Z'' 和 ''a'' 到 ''z'' 都被保留):
| 字母 | 日期或时间元素 | 表示 | 示例 |
| G | Era 标志符 | Text | AD |
| y | 年 | Year | 1996; 96 |
| M | 年中的月份 | Month | July; Jul; 07 |
| w | 年中的周数 | Number | 27 |
| W | 月份中的周数 | Number | 2 |
| D | 年中的天数 | Number | 189 |
| d | 月份中的天数 | Number | 10 |
| F | 月份中的星期 | Number | 2 |
| E | 星期中的天数 | Text | Tuesday; Tue |
| a | Am/pm 标记 | Text | PM |
| H | 一天中的小时数(0-23) | Number | 0 |
| k | 一天中的小时数(1-24) | Number | 24 |
| K | am/pm 中的小时数(0-11) | Number | 0 |
| h | am/pm 中的小时数(1-12) | Number | 12 |
| m | 小时中的分钟数 | Number | 30 |
| s | 分钟中的秒数 | Number | 55 |
| S | 毫秒数 | Number | 978 |
| z | 时区 | General time zone | Pacific Standard Time; PST; GMT-08:00 |
| Z | 时区 | RFC 822 time zone | -0800 |
模式字母通常是重复的,其数量确定其精确表示:
- Text: 对于格式化来说,如果模式字母的数量大于或等于 4,则使用完全形式;否则,在可用的情况下使用短形式或缩写形式。对于分析来说,两种形式都是可接受的,与模式字母的数量无关。
- Number: 对于格式化来说,模式字母的数量是最小的数位,如果数位不够,则用 0 填充以达到此数量。对于分析来说,模式字母的数量被忽略,除非必须分开两个相邻字段。
- Year: 对于格式化来说,如果模式字母的数量为 2,则年份截取为 2 位数,否则将年份解释为 number。
对于分析来说,如果模式字母的数量大于 2,则年份照字面意义进行解释,而不管数位是多少。因此使用模式 "MM/dd/yyyy",将 "
在分析缩写年份模式("y" 或 "yy")时,SimpleDateFormat 必须相对于某个世纪来解释缩写的年份。这通过将日期调整为 SimpleDateFormat 实例创建之前的 80 年和之后 20 年范围内来完成。例如,在 "MM/dd/yy" 模式下,如果 SimpleDateFormat 实例是在 1997 年 1 月 1 日创建的,则字符串 "
- Month: 如果模式字母的数量为 3 或大于 3,则将月份解释为 text;否则解释为 number。
- General time zone: 如果时区有名称,则将它们解释为 text。对于表示 GMT 偏移值的时区,使用以下语法:
· GMT Sign Hours : Minutes
· Sign: one of
· + -
· Hours:
· Digit
· Digit Digit
· Minutes:
· Digit Digit
· Digit: one of
0 1 2 3 4 5 6 7 8 9
Hours 必须在 0 到 23 之间,Minutes 必须在 00 到 59 之间。格式是与语言环境无关的,并且数字必须取自 Unicode 标准的 Basic Latin 块。
对于分析来说,RFC 822 time zones 也是可接受的。
- RFC 822 time zone: 对于格式化来说,使用 RFC 822 4-digit 时区格式:
· RFC822TimeZone:
· Sign TwoDigitHours Minutes
· TwoDigitHours:
Digit Digit
TwoDigitHours 必须在 00 和 23 之间。其他定义请参阅 general time zones。
对于分析来说,general time zones 也是可接受的。
SimpleDateFormat 还支持本地化日期和时间模式 字符串。在这些字符串中,以上所述的模式字母可以用其他与语言环境有关的模式字母来替换。SimpleDateFormat 不处理除模式字母之外的文本本地化;而由类的客户端来处理。
示例
以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间为美国太平洋时区的本地时间 2001-07-04 12:08:56。
| 日期和时间模式 | 结果 |
| "yyyy.MM.dd G ''at'' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT |
| "EEE, MMM d, ''''yy" | Wed, Jul 4, ''01 |
| "h:mm a" | 12:08 PM |
| "hh ''o''''clock'' a, zzzz" | 12 o''clock PM, Pacific Daylight Time |
| "K:mm a, z" | 0:08 PM, PDT |
| "yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM |
| "EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 |
| "yyMMddHHmmssZ" | 010704120856-0700 |
| "yyyy-MM-dd''T''HH:mm:ss.SSSZ" | |
推荐文章 |
