Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การใช้ printf() จัดรูปแบบเวลาใน Java ให้ถูกต้อง


เมธอด printf() ใช้พิมพ์สตริงที่จัดรูปแบบแล้ว รับ format string และอาร์เรย์ของอ็อบเจกต์ หากอาร์กิวเมนต์มากกว่าตัวแทนใน format string ตัวเกินจะถูกละเว้น

Format Characters สำหรับเวลา (Time)

ตัวอักษรคำอธิบายตัวอย่าง
%tHชั่วโมงของวัน (00-24)14
%tIชั่วโมงของวัน (01-12)02
%tkชั่วโมงของวัน (0-24)14
%tlชั่วโมงของวัน (1-12)2
%tMนาทีของชั่วโมง (00-59)30
%tSวินาทีของนาที (00-60)45
%tLมิลลิวินาที (000-999)123
%tNนาโนวินาที (000000000-999999999)123456789
%tpAM/PM (ตัวเล็ก)pm
%tzTime zone offset+0700
%tZชื่อ Time zoneICT
%tsวินาทีจาก epoch1705321845
%tQมิลลิวินาทีจาก epoch1705321845123
%tTเวลาแบบเต็ม (HH:MM:SS)14:30:45

ตัวอย่างการจัดรูปแบบเวลา

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("ชั่วโมง: %tH%n", obj);   // ชั่วโมง 24 ชม.
        System.out.printf("นาที: %tM%n", obj);      // นาที
        System.out.printf("วินาที: %tS%n", obj);    // วินาที
    }
}

ผลลัพธ์

15:50:28
ชั่วโมง: 15
นาที: 50
วินาที: 28

ตัวอย่าง: แสดงเวลา 12 และ 24 ชั่วโมง

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("เวลา 12 ชม.: %tI:%tM %tp %n", obj, obj, obj);
        System.out.printf("เวลา 24 ชม.: %tH ชม. %tM นาที %tS วินาที%n", obj, obj, obj);
    }
}

ผลลัพธ์

11:38:08
เวลา 12 ชม.: 11:38 am
เวลา 24 ชม.: 11 ชม. 38 นาที 08 วินาที

เทคนิค Index Reference (1$) - ลดการส่งอาร์กิวเมนต์ซ้ำ

ใช้ 1$ เพื่ออ้างอิงอาร์กิวเมนต์ตัวแรก ซ้ำได้หลายครั้ง

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("เวลา 12 ชม.: %tI:%1$tM %1$tp %n", obj);
        System.out.printf("เวลา 24 ชม.: %1$tH ชม. %1$tM นาที %1$tS วินาที%n", obj);
    }
}

ผลลัพธ์

11:47:13
เวลา 12 ชม.: 11:47 am
เวลา 24 ชม.: 11 ชม. 47 นาที 13 วินาที

สรุป

  • ใช้ %t นำหน้าตัวอักษร format สำหรับวันที่/เวลา
  • ใช้ n$ (เช่น 1$, 2$) อ้างอิงอาร์กิวเมนต์ที่ n
  • %tT คือ shortcut สำหรับ %tH:%tM:%tS
  • printf() คืนค่า PrintStream สามารถ chaining ได้