使用 printf 进行日期格式化

java programming java8object oriented programming

使用 printf 方法可以非常轻松地进行日期和时间格式化。您可以使用两个字母的格式,以 t 开头,以表格中的一个字母结尾,如以下代码所示。

示例

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // 实例化 Date 对象
      Date date = new Date();

      // 显示时间和日期
      String str = String.format("当前日期/时间 : %tc", date );

      System.out.printf(str);
   }
}

将产生以下结果 −

输出

当前日期/时间 : Sat Dec 15 16:37:57 MST 2012

如果必须多次提供日期来格式化每个部分,那就有点愚蠢了。因此,格式字符串可以指示要格式化的参数的索引。

索引必须紧跟在 % 之后,并且必须以 $ 结尾。

示例

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // 实例化 Date 对象
      Date date = new Date();

      // 显示时间和日期
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "到期日期:", date);
   }
}

将产生以下结果 −

输出

到期日期: 2004 年 2 月 9 日

或者,您可以使用 < 标志。它表示应再次使用与前面格式规范中相同的参数。

示例

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // 实例化 Date 对象
      Date date = new Date();

      // 显示格式化的日期
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

这将产生以下结果 −

输出

Due date: February 09, 2004

日期和时间转换字符

字符
说明
示例
c
完整日期和时间
2009 年 5 月 4 日星期一 09:51:52 CDT
F
ISO 8601 日期
2004-02-09
D
美国格式的日期(月/日/年)
2004 年 9 月 2 日
T
24 小时制
18:05:19
r
12 小时制
下午 06:05:19
R
24 小时制,无秒
18:05
Y
四位数年份(带前导零)
2004
y
年份的最后两位数字(带前导零)
04
C
年份的前两位数字(带前导零)
20
B
完整月份名称
二月
b
缩写月份名称
二月
m
两位数的月份(带前导零)
02
d
两位数的日期(带前导零)
03
e
两位数的日期(不带前导零)
9
A
完整的星期名称
星期一
a
缩写的星期名称
星期一
j
三位数的一年中的天数(带前导零)
069
H
两位数的小时数(带前导零),介于 00 和 23 之间
18
k
两位数的小时数(不带前导零),介于 0 和 23 之间
18
I
两位数的小时数(带前导零),介于 01 和 12 之间
06
l
两位数的小时数(不带前导零),介于 1 到 12 之间
6
M
两位数的分钟数(带前导零)
05
S
两位数秒(带前导零)
19
L
三位数毫秒(带前导零)
047
N
九位纳秒(带前导零)
047000000
P
大写的上午或下午标记
PM
p
小写的上午或下午标记
pm
z
RFC 822 与 GMT 之间的数字偏移量
-0800
Z
时区
PST
s
自 1970-01-01 00:00:00 GMT 以来的秒数
1078884319
Q
自 1970-01-01 00:00:00 GMT 以来的毫秒数
1078884319047

相关文章