繁体   English   中英

IllegalFormatConversionException d != java.lang.Integer 尝试打印日期时?

[英]IllegalFormatConversionException d != java.lang.Integer when trying to printf date?

public void display() {
    System.out.printf("%-10d%-12s%-12s%10.2f%8d%12.2f%1$td.%1$tm.%1$ty %n\n",
    this.getID(),
    this.getFirstName(),
    this.getLastName(),
    this.getState(),
    this.getNo(),
    this.getAmt(),
    this.getDate());
}

是我打印出我的一些信息的方法。 this.getDate以 Date (java.util.Date) 类型返回日期。

我有一个例子System.out.printf("%1$td.%1$tm.%1$ty %n", date); dd.mm.yyyy格式打印数据。 我试图将它放入我的代码中,但从外观上看,我犯了格式错误?

我现在一直在尝试一些打印方法,但发现它自己如何工作令人困惑,但是当我尝试将它放入更大的 printf 语句时我遇到了问题。

问题是 $-sign 之前的数字表示对象的绝对索引(从 1 开始!😉)。 您打算指向日期(索引 7),但指向第一个元素,它恰好是一个整数。 您需要使用"%-10d%-12s%-12s%10.2f%8d%12.2f%7$td.%7$tm.%7$ty %n\\n"进行格式化。

首先,日期格式是一个复杂的问题,已经为您处理过了。 所以你试图提出你自己的格式化程序(例如 "%-10d%-12s%-12s%10.2f%8d%12.2f%td.%toString() of class Date 。如果你需要更好的格式而不是查看方法DateFormat.format(Date date) 。但是,请注意,如果您使用 Java 8 或更高版本,则不应使用java.util.Date类。查看java.time包。使用ZonedDateTime或其任何“兄弟”代替Date并使用DateTimeFormatter将其格式化为字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM