如何在 Java 中正确使用 printf() 格式化?

该printf()方法用于打印格式化字符串,它接受表示格式字符串的字符串和表示将在结果字符串中的元素的对象数组,如果参数的数量大于格式中的字符数string 多余的对象被忽略。

下表列出了通过 Java 方法格式化时间的各种格式字符printf()及其描述 -

格式化字符描述
'H'
相应的参数被格式化为一天中的小时 (00-24)。
'I'
相应的参数被格式化为一天中的小时 (01 -12)。
'k'
相应的参数被格式化为一天中的小时 (0-24)。
'l'
相应的参数被格式化为一天中的小时 (1-12)。
'M'
相应的参数被格式化为一小时的分钟数 (00-59)。
'S'
相应的参数被格式化为一分钟的秒数 (00-60)。
'L'
相应的参数格式为毫秒 (000-999)。
'N'
相应的参数格式为纳秒 (000000000 - 999999999)。
'p'
相应的参数格式为 pm 或 am。
'z'
相应的参数被格式化为时间 zxone。
'Z'
相应的参数被格式化为代表时区的字符串。
's'
相应的参数被格式化为自纪元以来的秒数。
'Q'
相应的参数被格式化为自纪元以来的毫秒数。

示例

以下示例演示了如何使用该printf()方法格式化日期值。

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("Hours: %tH%n", obj);
      System.out.printf("Minutes: %tM%n", obj);
      System.out.printf("Seconds: %tS%n", obj);
   }
}
输出结果
15:50:28
Hours: 15
Minutes: 50
Seconds: 28

示例

以下示例演示如何使用 javapritntf()方法打印 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("Time 12 hours: %tI:%tM %tp %n", obj, obj, obj); System.out.printf("Time 24 hours: %tH: hours %tM: minutes %tS: seconds%n", obj, obj, obj);
   }
}
输出结果
11:38:08
Time 12 hours: 11:38 am
Time 24 hours: 11: hours 38: minutes 08: seconds

如果您在上面的示例中观察到,我们使用相同的日期对象来打印各种值,我们可以使用索引引用 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("Time 12 hours: %tI:%1$tM %1$tp %n", obj);
      System.out.printf("Time 24 hours: %1$tH: hours %1$tM: minutes %1$tS: seconds%n", obj);
   }
}
输出结果
11:47:13
Time 12 hours: 11:47 am
Time 24 hours: 11: hours 47: minutes 13: seconds