【发布时间】:2014-03-27 02:57:30
【问题描述】:
我即将写一些简单的数学运算,并想确保Joda-Time 中没有一些简单的高级构造可以做到这一点。
我有一个对象,它代表一周中的一天、一天中的一个小时和一小时的一分钟。例如“星期三上午 10:14”。
我想计算下一次发生前的毫秒数。例如,如果现在是星期四的 10:14,那么这将是 6 天的毫秒数。这是因为星期三已经过去,所以到下一个星期三需要 6 天。如果现在是星期三 10:13.0001,它将是 999。
Joda-Time 中是否有高级构造,所以我可以用一两行代码来完成这项工作,还是我需要自己做数学计算(包括包装 DOW
谢谢!
这是我的新手尝试,还不能给你一些参考:
public MutableDateTime getDateTime() {
MutableDateTime date = MutableDateTime.now();
date.setDayOfWeek(this.day);
date.setHourOfDay(this.hour);
return date;
}
public long getTimeUntilNextFrom( DateTime from ) {
MutableDateTime to = getDateTime();
if (to.isBefore( from )) {
to.setWeekOfWeekyear(from.getWeekOfWeekyear() + 1);
}
return new Interval(from, to).toDurationMillis();
}
【问题讨论】:
-
你的逻辑让我无法理解,对不起;你能让规则更明确吗?在“星期三上午 10:14”和“星期四上午 10:14”之间,据我所知,只有一天的毫秒值......
-
我进行了编辑以使其更清晰。请记住,这些是一周中的几天,并且几周会重复出现。所以如果是星期四,我们没有时间机器可以及时回到星期三,我们必须计算到下一个星期三的时间。
-
好的,所以它是参考
DateTime.now()?时区呢? -
查看示例。时区无关紧要,因为它是单个 JVM 实例中的持续时间算法。
-
@user1888440 如果某些系统管理员或用户更改了机器的默认时区,或者同一 JVM 中的其他 Java 代码笨拙地更改了 JVM 的默认时区,则时区将很重要。更好的做法是始终指定您的时区。