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