使用printf格式化日期

使用printf方法可以很容易地完成日期和时间的格式化。您使用两种字母的格式,以t开头,以表的字母之一结尾,如以下代码所示。

示例

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      //实例化一个Date对象
      Date date = new 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[]) {
      //实例化一个Date对象
      Date date = new Date();

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

这将产生以下结果-

输出结果

截止日期: February 09, 2004

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

示例

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", "截止日期:", date);
   }
}

这将产生以下结果-

输出结果

截止日期: February 09, 2004

日期和时间转换字符

字符
描述

c
完成日期和时间
2009年5月4日星期一09:51:52 CDT
F
ISO 8601日期
2004-02-09
D
美国格式的日期(月/日/年)
2004/02/09
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
i
两位数的小时数(无前导零),介于1和12之间
6
M
两位数分钟(前导零)
05
S
两位数秒(前导零)
19
L
三位数毫秒(前导零)
047
N
九位数纳秒(前导零)
047000000
P
大写的上午或下午标记
下午
p
小写的上午或下午标记
下午
z
相对于GMT的RFC 822数字偏移
-0800
Z
时区
太平洋标准时间
s
自格林尼治标准时间1970-01-01 00:00:00秒
1078884319
Q
格林尼治标准时间1970-01-01 00:00:00以来的毫秒
1078884319047