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