gpt4 book ai didi

java - 以秒为单位的循环时间

转载 作者:行者123 更新时间:2023-12-01 06:49:32 25 4
gpt4 key购买 nike

在我的 Java 项目中,我想要将日期时间秒数除以 5。

I have got   -   I want 
12:00:01 - 12:00:00
12:00:04 - 12:00:05
12:00:06 - 12:00:05
12:00:07 - 12:00:05
12:00:08 - 12:00:10
...
12:00:58 - 12:01:00

日期对象包含日期,例如:Fri May 12 12:00:03 CEST 2017我想要以 5 为模的四舍五入秒。我想要实现具有四舍五入秒的 Date 对象。

如何使用简单的数学或 Joda 来完成此操作?

最佳答案

作为对Ole V.V正确答案的补充:

据我所知(但其他人可能会纠正我),Joda-Time 提供 rounding features但不是OP想要的类型,即可配置的步长(此处:5秒)。所以我怀疑 Joda 解决方案与 @Ole 给出的基于 Java-8 的解决方案非常相似。

我的时间库Time4J有一些更多的舍入功能,无需过多考虑舍入数学,如以下代码所示:

import net.time4j.ClockUnit;
import net.time4j.PlainTime;

import net.time4j.format.expert.Iso8601Format;

import java.text.ParseException;
import java.time.LocalTime;

import static net.time4j.PlainTime.*;

public class RoundingOfTime {

public static void main(String... args) throws ParseException {
PlainTime t1 = Iso8601Format.EXTENDED_WALL_TIME.parse("12:59:57");
PlainTime t2 = Iso8601Format.EXTENDED_WALL_TIME.parse("12:59:58");

System.out.println(t1.with(SECOND_OF_MINUTE.roundedHalf(5))); // T12:59:55
System.out.println(t2.with(SECOND_OF_MINUTE.roundedHalf(5))); // T13

LocalTime rounded =
PlainTime.nowInSystemTime()
.with(PRECISION, ClockUnit.SECONDS) // truncating subseconds
.with(SECOND_OF_MINUTE.roundedHalf(5)) // rounding
.toTemporalAccessor(); // conversion to java-time
System.out.println(rounded); // 15:57:05
}
}

方法roundedHalf(int)适用于 PlainTime 类中定义的大多数时间元素。我欢迎进一步的增强建议,甚至可能找到一种方法来定义此类方法,例如 TemporalAdjuster

关于java - 以秒为单位的循环时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43937466/

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