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


printf() 方法用于打印格式化字符串,它接受一个表示格式字符串的字符串和一个表示要包含在结果字符串中的元素的对象数组。如果参数数量超过格式字符串中字符的数量,则会忽略多余的对象。

下表列出了 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'
相应的参数格式化为下午或上午。
'z'
相应的参数格式化为时区。
'Z'
相应的参数格式化为表示时区的字符串。
's'
相应的参数格式化为自纪元以来的秒数。
'Q'
相应的参数格式化为自纪元以来的毫秒数。

示例

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

在线演示

import java.util.Date;
public class Example {
   public static void main(String args[]) {  
      //creating the date class
      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

示例

以下示例演示了如何使用 Java printf() 方法打印 12 小时和 24 小时的时钟。

在线演示

import java.util.Date;
public class Example {
   public static void main(String args[]) {  
      //creating the date class
      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

如果观察上面的示例,我们使用相同的 date 对象打印各种值,我们可以使用索引引用 1$ 来避免使用多个参数,如下所示:

示例

在线演示

import java.util.Date;
public class Example {
   public static void main(String args[]) {  
      //creating the date class
      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

更新于: 2021-02-06

234 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告