使用 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+ 次檢視

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告