Phương thức printf() được dùng để in một chuỗi đã định dạng. Nó chấp nhận một chuỗi đại diện cho định dạng (format string) và một mảng các đối tượng đại diện cho các phần tử sẽ xuất hiện trong chuỗi kết quả. Nếu số lượng đối số nhiều hơn số ký tự định dạng, các đối tượng thừa sẽ bị bỏ qua.
Bảng sau liệt kê các ký tự định dạng để định dạng thời gian bằng phương thức printf() của Java cùng với mô tả:
| Ký tự định dạng | Mô tả |
|---|---|
| 'H' | Đối số tương ứng được định dạng là Giờ trong ngày (00-24). |
| 'I' | Đối số tương ứng được định dạng là giờ trong ngày (01-12). |
| 'k' | Đối số tương ứng được định dạng là giờ trong ngày (0-24). |
| 'l' | Đối số tương ứng được định dạng là giờ trong ngày (1-12). |
| 'M' | Đối số tương ứng được định dạng là phút của giờ (00-59). |
| 'S' | Đối số tương ứng được định dạng là giây của phút (00-60). |
| 'L' | Đối số tương ứng được định dạng là mili-giây (000-999). |
| 'N' | Đối số tương ứng được định dạng là nano-giây (000000000-999999999). |
| 'p' | Đối số tương ứng được định dạng là pm hoặc am. |
| 'z' | Đối số tương ứng được định dạng là múi giờ. |
| 'Z' | Đối số tương ứng được định dạng là chuỗi biểu diễn múi giờ. |
| 's' | Đối số tương ứng được định dạng là giây từ epoch. |
| 'Q' | Đối số tương ứng được định dạng là mili-giây từ epoch. |
Ví dụ 1: Định dạng cơ bản
import java.util.Date;
public class Example {
public static void main(String args[]) {
Date obj = new Date();
System.out.printf("%tT%n", obj);
System.out.printf("Giờ: %tH%n", obj);
System.out.printf("Phút: %tM%n", obj);
System.out.printf("Giây: %tS%n", obj);
}
}
Kết quả
15:50:28 Giờ: 15 Phút: 50 Giây: 28
Ví dụ 2: In giờ 12h và 24h
import java.util.Date;
public class Example {
public static void main(String args[]) {
Date obj = new Date();
System.out.printf("%tT%n", obj);
System.out.printf("Giờ 12h: %tI:%tM %tp %n", obj, obj, obj);
System.out.printf("Giờ 24h: %tH: giờ %tM: phút %tS: giây%n", obj, obj, obj);
}
}
Kết quả
11:38:08 Giờ 12h: 11:38 am Giờ 24h: 11: giờ 38: phút 08: giây
Nếu bạn quan sát ví dụ trên, chúng ta đang dùng cùng một đối tượng date để in nhiều giá trị. Chúng ta có thể tránh nhiều đối số bằng cách sử dụng tham chiếu chỉ số 1$ như sau:
Ví dụ 3: Sử dụng tham chiếu chỉ số
import java.util.Date;
public class Example {
public static void main(String args[]) {
Date obj = new Date();
System.out.printf("%tT%n", obj);
System.out.printf("Giờ 12h: %tI:%1$tM %1$tp %n", obj);
System.out.printf("Giờ 24h: %1$tH: giờ %1$tM: phút %1$tS: giây%n", obj);
}
}
Kết quả
11:47:13 Giờ 12h: 11:47 am Giờ 24h: 11: giờ 47: phút 13: giây