前言

最近为了打比赛混一下奖选了个java程序设计比赛,但是现在连语法都没学好,遇到了一点问题在本文记录一下

正文

看书的时候照着写了一句

System.out.printf("%tH:%tM:%tS","Now time is ",new Date());

很顺利的报错了
图片-1668933512906
然后再次尝试写成这样

System.out.printf("%tH:%tM:%tS",new Date());

很顺利的报错了
图片-1668933723240

我这里是因为没有理解为什么会有个"Now time is "
原文是这样的

System.out.printf("%1$s %2$tB %2$te, %2$tY","Due date:",new Date());

会输出如下

Due date: February 9, 2015

我脑子多半有点短路,在这里反复核对了是不是格式化字符的问题

踩了个大坑,之后才反应过来这个格式化字符在只有一个参数的时候应该考虑复用,并且"Now time is"也是

作为一个format参数,前面又加了一个%s,所以"Now time is "才会跑到前面来

可能是最近冲太多了脑子坏了😭

最终理解了格式化的写法如下

System.out.printf("Now time is %1$tH:%1$tM:%1$tS",new Date());

或者这样写

System.out.printf("Now time is %tH:%<tM:%<tS",new Date());

图片-1668933911196