日期时间 – 使用Java 8进行圆顶分钟
发布时间:2020-12-14 05:08:38 所属栏目:Java 来源:网络整理
导读:所以我很幸运地使用 Java 8和新的时间APi,但我没有看到任何四舍五入的功能… 基本上如果时间是… 2014-08-28T10:01.00.000 ---- 2014-08-28T10:02.00.0002014-08-28T10:01.10.123 ---- 2014-08-28T10:02.00.0002014-08-28T10:01.25.123 ---- 2014-08-28T10:0
所以我很幸运地使用
Java 8和新的时间APi,但我没有看到任何四舍五入的功能…
基本上如果时间是… 2014-08-28T10:01.00.000 ----> 2014-08-28T10:02.00.000 2014-08-28T10:01.10.123 ----> 2014-08-28T10:02.00.000 2014-08-28T10:01.25.123 ----> 2014-08-28T10:02.00.000 2014-08-28T10:01.49.123 ----> 2014-08-28T10:02.00.000 2014-08-28T10:01.59.999 ----> 2014-08-28T10:02.00.000 这似乎是可以的,但是对吗? LocalDateTime now = LocalDateTime.now(Clock.systemUTC()); LocalDateTime newTime = now.plusMinutes(1); System.out.println(newTime.toString()); System.out.println(newTime.format(DateTimeFormatter.ofPattern("yyyy-dd-MM'T'HH:mm:00.000"))); 解决方法
java.time API不支持四舍五入,但是它支持
rounding to floor(截断),可以实现所需的行为(这并不是最终的最高).
LocalDateTime now = LocalDateTime.now(); LocalDateTime roundFloor = now.truncatedTo(ChronoUnit.MINUTES); LocalDateTime roundCeiling = now.truncatedTo(ChronoUnit.MINUTES).plusMinutes(1); 此外,还有一个设施可以获得一分钟只能打勾的时钟,这可能是有意义的: Clock minuteTickingClock = Clock.tickMinutes(ZoneId.systemDefault()); LocalDateTime now = LocalDateTime.now(minuteTickingClock); LocalDateTime roundCeiling = now.plusMinutes(1); 这个时钟将自动截断分钟到楼层(尽管是specified,这样它可能会返回延迟的缓存值).请注意,如果需要,时钟可以存储在静态变量中. 最后,如果这是要在多个地方使用的常见操作,则可以编写库 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |