java - 使用 Joda-Time 计算一周中的第二天和时间

标签 java jodatime

我即将写一些简单的数学行,并想确保 Joda-Time 中没有一些简单的高级构造。已经这样做了。

我有一个对象,它代表一周中的一天、一天中的一小时和一小时中的一分钟。例如“星期三上午 10:14”。

我想计算下一次发生之前的毫秒数。例如,如果现在是星期四 10:14,则相当于 6 天的毫秒数。这是因为周三已经过去了,所以需要 6 天才能到达下周三。如果现在是星期三 10:13.0001,则为 999。

Joda-Time 中是否有高级构造,以便我可以用一两行代码来完成此操作,或者我是否需要自己进行数学计算(包括边缘情况以包装 DOW < DOW_NOW 等内容)。

谢谢!

这是我的新手尝试,目前还不行,给大家一些引用:

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();
}

最佳答案

你可以这样做:

import org.joda.time.DateTime;
import org.joda.time.DateTimeConstants;
import org.joda.time.Interval;
import org.joda.time.LocalTime;

public class Main {
    public static void main(String[] args) {
        Interval interval = betweenNowAndNext(DateTimeConstants.MONDAY, new LocalTime(10, 14));
        System.out.println(interval.toDurationMillis());
    }

    public static Interval betweenNowAndNext(int dayOfWeek, LocalTime time) {
        DateTime now = DateTime.now();
        DateTime closest = time.toDateTime(now).withDayOfWeek(dayOfWeek);
        return new Interval(now, closest.isBefore(now) ? closest.plusWeeks(1) : closest);
    }
}

关于java - 使用 Joda-Time 计算一周中的第二天和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22668462/

相关文章:

java - 当不涉及与 'then..' 方法链接时,是否保证 CompletableFuture 排序?

java - 计算器程序不断得出答案 "0"?

java - 将字符串解析为 JodaTime 的格式无效问题

java - 初始化 LocalDateTime - 时间为零

java - 如何使用joda time格式化固定毫秒数为hh :mm:ss?

java - 所有这些 FindBugs 前缀 AM、BC、DP……是什么意思?

java - NoClassDefFoundError 和 ClassNotFoundException 的原因和区别是什么?

java - 非法模式组件: p while dealing with DATE

java - 如何使用 joda time 检查时间是否在间隔之前

java - Java 中的 MySQL 连接错误 - com.mysql.jdbc.Driver