使用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 |