本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
日期时间
您可以使用带图案的字母指定日期和时间格式。日期和时间模式字符串使用从 'A' 到 'Z' 以及从 'a' 到 'z' 的无引号字母,每个字母代表一个格式化元素。
有关更多信息,请参阅 Orac le SimpleDateFormat
注意
如果您包含其他字符,则它们将在格式化期间合并到输出字符串中,或者在解析期间将其与输入字符串进行比较。
定义了下表中的模式字母(从 “A” 到 “Z” 以及从 “a” 到 “z” 的所有其他字符均为保留)。
信 | 日期或时间组件 | 演示文稿 | 示例 |
---|---|---|---|
y |
年份 |
年份 |
yyyy; yy 2018; 18 |
是 |
星期几 |
年份 |
YYYY; YY 2009; 09 |
M |
一年中的月 |
月份 |
MMM; MM; MM 七月; 七月; 07 |
w |
一年中的月 |
数字 |
ww; 27 |
W |
月 |
数字 |
W 2 |
D |
一年中的日期 |
数字 |
DDD 321 |
d |
一个月中的一天 |
数字 |
dd 10 |
F |
月 |
数字 |
F 2 |
E |
一周中的日期名称 |
文本 |
星期二;星期二 |
u |
周的天数(1 = 星期一,...,7 = 星期日) |
数字 |
1 |
a |
上午/下午标记 |
文本 |
下午 |
H |
一天中的小时 |
数字 |
0 |
k |
一天中的小时 |
数字 |
24 |
K |
上午/下午一小时 (0-11) |
数字 |
0 |
h |
上午 |
数字 |
12 |
m |
以分钟为单位 |
数字 |
30 |
s |
分钟内秒钟 |
数字 |
55 |
S |
毫秒 |
数字 |
978 |
z |
时区 |
通用区 |
太平洋标准时间;太平洋标准时间;GMT-08:00 |
Z |
时区 |
RFC 822 time zone |
-0800 |
X |
时区 |
ISO 8601 时区 |
-08; -0800;-08:00 |
您可以按照 YYYY 的思路重复模式字母来确定确切的呈现方式。
文本
如果重复的模式字母数为 4 个或更多,则使用完整格式;否则,使用简短或缩写形式(如果有)。在解析方面,无论模式字母的数量如何,这两种形式都可接受。
数字
对于格式化,模式字母的数目是最小位数,较短的数字用零填充到这个数字。在解析时,除非需要将两个相邻字段分开,否则模式字母的数量将被忽略。
年份
如果格式化程序的日历是公历,则适用以下规则。
-
对于格式化,如果模式字母的数量为 2,则将年份截断为 2 位数;否则将其解释为数字。
-
为了进行解析,如果模式字母的数量大于 2,则无论位数多少,都将按字面解释年份。因此,使用 “mm/dd/yyyy” 模式,“01/11/12” 可以解析为公元 12 年 1 月 11 日
要使用缩写的年份模式(“y” 或 “yy”)进行解析, SimpleDateFormat 必须解释相对于某个世纪的缩写年份。为此,它会将日期调整为创建实例之前的 80 年内和创建 SimpleDateFormat 实例后 20 年以内。例如,使用 “mm/dd/YY” 的模式和在 2018 年 1 月 1 日创建的 SimpleDateFormat 实例,字符串 “01/11/12” 将被解释为 2012 年 1 月 11 日,而字符串 “05/04/64” 将被解释为 1964 年 5 月 4 日。在解析过程中,只有由 character.isDigit (char) 定义的恰好由两位数字组成的字符串才会被解析为默认世纪。任何其他数字字符串,例如一位数字符串、三位或三位数以上的字符串或不全是数字的两位数字符串(例如,“-1”),都是按字面解释的。因此,使用与公元 3 年 1 月 2 日相同的模式解析 “01/02/3” 或 “01/02/003”。同样,“01/02/-3” 被解析为公元前 4 年 1 月 2 日。
否则,将应用日历系统特定的表单。对于格式化和解析,如果模式字母的数量为 4 个或更多,则使用日历特定的长格式。否则,将使用日历特定的简短或缩写形式。