如何在 java 8 中从 LocalTime 中删除毫秒

使用java.time框架,我想以格式打印时间,但以格式给出时间。我试图使用:hh:mm:ssLocalTime.now()hh:mm:ss,nnnDateTimeFormatter

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_TIME;
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);

结果:

22:53:51.894

如何从时间中删除毫秒?


答案 1

编辑:我应该补充一点,这些是纳秒而不是毫秒。

我觉得这些答案并没有真正回答使用Java 8 SE日期和时间API的问题。我相信截断To方法是这里的解决方案。

LocalDateTime now = LocalDateTime.now();
System.out.println("Pre-Truncate:  " + now);
DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE_TIME;
System.out.println("Post-Truncate: " + now.truncatedTo(ChronoUnit.SECONDS).format(dtf));

输出:

Pre-Truncate:  2015-10-07T16:40:58.349
Post-Truncate: 2015-10-07T16:40:58

或者,如果使用时区:

LocalDateTime now = LocalDateTime.now();
ZonedDateTime zoned = now.atZone(ZoneId.of("America/Denver"));
System.out.println("Pre-Truncate:  " + zoned);
DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
System.out.println("Post-Truncate: " + zoned.truncatedTo(ChronoUnit.SECONDS).format(dtf));

输出:

Pre-Truncate:  2015-10-07T16:38:53.900-06:00[America/Denver]
Post-Truncate: 2015-10-07T16:38:53-06:00    

答案 2

切至分钟:

 localTime.truncatedTo(ChronoUnit.MINUTES);

切到秒:

localTime.truncatedTo(ChronoUnit.SECONDS);

例:

import java.time.LocalTime;
import java.time.temporal.ChronoUnit;

LocalTime.now()
  .truncatedTo(ChronoUnit.SECONDS)
  .format(DateTimeFormatter.ISO_LOCAL_TIME);

输出15:07:25