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