使用 printf 格式化日期


使用 **printf** 方法可以很容易地进行日期和时间格式化。您可以使用由 **t** 开头并以表格中所示的字母结尾的两个字母的格式,如下面的代码所示。

示例

在线演示

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      String str = String.format("Current Date/Time : %tc", date );

      System.out.printf(str);
   }
}

这将产生以下结果:

输出

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

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

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

示例

在线演示

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

这将产生以下结果:

输出

Due date: February 09, 2004

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

示例

在线演示

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

这将产生以下结果:

输出

Due date: February 09, 2004

日期和时间转换字符

字符
描述
示例
c
完整日期和时间
Mon May 04 09:51:52 CDT 2009
F
ISO 8601 日期
2004-02-09
D
美国格式日期 (月/日/年)
02/09/2004
T
24 小时制时间
18:05:19
r
12 小时制时间
06:05:19 pm
R
24 小时制时间,无秒
18:05
Y
四位数年份(带前导零)
2004
y
年份的后两位数字(带前导零)
04
C
年份的前两位数字(带前导零)
20
B
完整月份名称
二月
b
月份缩写名称
Feb
m
两位数月份(带前导零)
02
d
两位数日期(带前导零)
03
e
两位数日期(无前导零)
9
A
完整星期名称
星期一
a
星期缩写名称
Mon
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

更新于:2020年6月19日

6K+ 次查看

启动您的 职业生涯

完成课程获得认证

开始学习
广告