如何从时间(小时)中删除前导零

6

我希望在不带前导零的情况下获取从1到9的小时数,但需要保留分钟数前面的零,并将时间增加15分钟。

当前,当我输入1和46时,会得到02:01,而我想要得到2:01。

Scanner scan = new Scanner(System.in);
int hour = scan.nextInt();
int minutes = scan.nextInt();
LocalTime time = LocalTime.of(hour , minutes);
time = time.plusMinutes(15);
System.out.println(time);

为什么不直接使用time.toString().replaceAll("^0","")呢? - Luis A. Florit
简单而美好的一个。 - MickeyMoise
2个回答

8
您可以使用格式为"H:mm"DateTimeFormatter https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html
DateTimeFormatter.ofPattern("H:mm").format(LocalTime.now())

数字:如果字母计数为1,则输出值时使用最少的数字且不填充。否则,数字的计数用作输出字段的宽度,必要时将值用零填充。以下模式字母对字母计数有限制。只能指定一个字母'c'和'F'。最多可以指定两个字母'd'、'H'、'h'、'K'、'k'、'm'和's'。最多可以指定三个字母'D'。

4
当你直接打印time时,它使用LocalTimetoString()方法,并且该方法文档如下:
输出将是以下 ISO-8601 格式之一: - HH:mm - HH:mm:ss - HH:mm:ss.SSS - HH:mm:ss.SSSSSS - HH:mm:ss.SSSSSSSSS 所使用的格式将是最短的,其中省略的部分被视为零。
因为您不希望小时以零为前缀,所以您需要自己指定格式,通过调用format(...)方法而不是toString()方法。
例如:
System.out.println(time.format(DateTimeFormatter.ofPattern("H:mm")));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接