gpt4 book ai didi

datetime - 使用 Java 8 到天花板的圆形分钟

转载 作者:行者123 更新时间:2023-12-03 08:37:14 26 4
gpt4 key购买 nike

所以我很幸运能够使用 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 (truncation) 启用所需的行为(不完全四舍五入到天花板):

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 这样它可能会返回一个延迟的缓存值)。请注意,一个 Clock如果需要,可以存储在静态变量中。

最后,如果这是一个常用的操作,想在多处使用,可以写一个库 TemporalAdjuster 函数来执行舍入。 (调整器可以编写一次、测试并作为静态变量或方法提供)。

关于datetime - 使用 Java 8 到天花板的圆形分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com