日期和时间模式字符串

日期和时间格式由日期和时间模式字符串指定。

在日期和时间模式字符串中,未加引号的字母 '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

模式字母通常是重复的,其数量确定其精确表示。


Number: 对于格式化来说,模式字母的数量是最小的数位,如果数位不够,则用 0 填充以达到此数量。

月份中的天数d测试1:

Calendar cal = Calendar.getInstance();
        cal.set(1987, 0, 2, 3, 4, 5);// 设置时间为1987年1月2日3时4分5秒
        Date d = cal.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat();
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < 2; i++) {
            s.append("d");
            sdf.applyPattern(s.toString());
            System.out.println("" + s + "\t:" + sdf.format(d));
        }

打印:

月份中的天数d测试2:

        Calendar cal = Calendar.getInstance();
        cal.set(1987, 0, 28, 3, 4, 5);// 设置时间为1987年1月28日3时4分5秒
        Date d = cal.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat();
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < 3; i++) {
            s.append("d");
            sdf.applyPattern(s.toString());
            System.out.println("" + s + "\t:" + sdf.format(d));
        }

打印:


Year: 对于格式化来说,模式字母的数量小于4,则年份截取为 2 位数;否则将年份解释为 number。 

年份y测试:

        Calendar cal=Calendar.getInstance();
        cal.set(1987, 1, 2, 3, 4, 5);//设置时间为1987年1月2日3时4分5秒
        Date d=cal.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat();
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            s.append("y");
            sdf.applyPattern(s.toString());
            System.out.println(""+s+"\t:"+sdf.format(d));
        }

打印:


Month: 如果模式字母的数量为 3 或大于 3,则将月份解释为 text;否则解释为 number。

月份M测试:

        Calendar cal = Calendar.getInstance();
        cal.set(1987, 1, 2, 3, 4, 5);// 设置时间为1987年1月2日3时4分5秒
        Date d = cal.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat();
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            s.append("M");
            sdf.applyPattern(s.toString());
            System.out.println("" + s + "\t:" + sdf.format(d));
        }
        cal.set(1987, 11, 2, 3, 4, 5);// 设置时间为1987年12月2日3时4分5秒
        System.out.println("******修改月份为12月********");
        d = cal.getTime();
        s.setLength(0);
        for (int i = 0; i < 4; i++) {
            s.append("M");
            sdf.applyPattern(s.toString());
            System.out.println("" + s + "\t:" + sdf.format(d));
        }

打印:


Text: 对于格式化来说,如果模式字母的数量大于等于 4,则使用完全形式;否则,在可用的情况下使用短形式或缩写形式。


参考文档:JDK API 1.6

posted @ 2016-12-30 19:29  SQP51312  阅读(524)  评论(0编辑  收藏  举报