时间格式化处理-符号含义

java.text.SimpleDateFormat 模式字符串

下表是 支持的时间模式的字符串

字符 含义
G 年代标志符
y
M
d
h 时在上午或下午(1~12)
H 时在一天中(0~23)
m
s
S 毫秒
E 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午/下午标记符
k 时在一天中(1~24)
K 时在上午或下午(0~11)
z 时区

给出一个较完整的例子如下

System.out.println(
    new SimpleDateFormat("G y-M-d Z E H:m:s:S a").format(new Date())
);

输出结果为

公元 2018-11-26 +0800 星期一 18:3:42:236 下午

其中“公元”是年代,“ 2018-11-26”是格式化的年月日,“+0800” 是当前时区设置,“星期一”是星期,“17:32:11:099”是带毫秒的时间,“下午”是上下午标志。

java.text.SimpleDateFormat 模式扩展用法

上一章节的表格显示的是 java.text.SimpleDateFormat 模式的最基础的字符模式。这些模式实际上是可以有扩展的使用方法的。

字符 含义
MM 二位数字显示月份。位数不够前面补 0
MMM 用月份名称简写显示月份,例如 Nov
MMMMM 用月份名称全称显示月份,例如 November
HH 二位数字显示 24 小时制的小时,位数不够前面补 0
hh 二位数字显示 12 小时制的小时 ,位数不够前面补 0
mm 二位数字显示分钟,位数不够前面补 0
hh 二位数字显示秒 ,位数不够前面补 0
sss 三位数字显毫秒,位数不够前面补 0
非字母字符 例如-/*&^%()数字等,直接填充字符串位置
'' 常量字符,在两个'符号之间的字符串会被当做常量直接显示
System.out.println(
    new SimpleDateFormat("G y-MM-dd Z E HH:mm:ss:SSS a").format(new Date())
);

输出结果为

公元 2018-11-26 +0800 星期一 18:24:05:052 下午

如果我们要输出一些固定的含字母的字符串,则可以用下面的代码

            System.out.println(
                new SimpleDateFormat("'ygc time :'G y-MM-dd Z E HH:mm:ss:SSS a")
                    .format(new Date())
            );

输出结果为:

ygc time :公元 2018-11-26 +0800 星期一 21:01:13:076 下午

在代码中通过指定 java.text.SimpleDateFormat 构造函数中的 java.util.Locale 对象来指定语言选项,然后用不同语言来格式化时间。
编写代码输出每种语言的时间字符串如下所示

            Map languages = new LinkedHashMap<>();
            for (Locale locale : Locale.getAvailableLocales()) {
                languages.put(locale.getLanguage(), locale.getDisplayLanguage());
            }
            for (String key : languages.keySet()) {
                if (key.length() > 0) {
                    System.out.println(languages.get(key));
                    System.out.println(
                        new SimpleDateFormat("G y-MMMMM-dd Z E HH:mm:ss:SSS a", new Locale(key))
                            .format(new Date())
                    );
                }
            }


 

 

转载于:https://my.oschina.net/slightScenery/blog/3005072

你可能感兴趣的:(时间格式化处理-符号含义)