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

Nik*_*las 14 java rounding localtime datetime-format java-time

使用java.time框架,我想以格式打印时间hh:mm:ss,但是以格式LocalTime.now()给出时间hh:mm:ss,nnn.我试着用DateTimeFormatter:

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_TIME;
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);
Run Code Online (Sandbox Code Playgroud)

结果:

22:53:51.894
Run Code Online (Sandbox Code Playgroud)

如何从时间中删除毫秒?

dem*_*4dx 34

编辑:我应该补充说,这些是纳秒而不是毫秒.

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

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));
Run Code Online (Sandbox Code Playgroud)

输出:

Pre-Truncate:  2015-10-07T16:40:58.349
Post-Truncate: 2015-10-07T16:40:58
Run Code Online (Sandbox Code Playgroud)

或者,如果使用时区:

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));
Run Code Online (Sandbox Code Playgroud)

输出:

Pre-Truncate:  2015-10-07T16:38:53.900-06:00[America/Denver]
Post-Truncate: 2015-10-07T16:38:53-06:00    
Run Code Online (Sandbox Code Playgroud)


小智 18

减少到几分钟:

 localTime.truncatedTo(ChronoUnit.MINUTES);
Run Code Online (Sandbox Code Playgroud)

切到秒:

localTime.truncatedTo(ChronoUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

例:

LocalTime.now().truncatedTo(ChronoUnit.SECONDS).format(DateTimeFormatter.ISO_LOCAL_TIME)
Run Code Online (Sandbox Code Playgroud)

输出 15:07:25


Jon*_*eet 9

只需DateTimeFormatter明确创建:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.US);
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);
Run Code Online (Sandbox Code Playgroud)

(我更喜欢明确使用美国语言环境,以明确我不需要默认格式语言环境中的任何内容.)


Jus*_*tin 5

在第一行中使用它

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)