java - 获取两个日期之间的周数。

标签 java date jodatime

我在一个项目中工作,我在 Date 中有两种类型。我想计算这两个日期之间的周数。日期可以在不同的年份。有什么好的解决方案吗?

我已尝试使用其他主题中建议的 Joda-time 来实现这一点..

我不熟悉这个库,但我尝试做这样的事情:

public static int getNumberOfWeeks(Date f, Date l){
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(f);
    c2.setTime(l);
    DateTime start = new DateTime(c1.YEAR, c1.MONTH, c1.DAY_OF_MONTH, 0, 0, 0, 0);
    DateTime end   = new DateTime(c2.YEAR, c2.MONTH, c2.DAY_OF_MONTH, 0, 0, 0, 0);
    Interval interval = new Interval(start, end);
    Period p = interval.toPeriod();
    return p.getWeeks();
}

但这是完全错误的......有什么建议吗?

最佳答案

更新答案以说明 Java 8

// TechTrip - ASSUMPTION d1 is earlier than d2
// leave that for exercise
public static long getFullWeeks(Calendar d1, Calendar d2){

    Instant d1i = Instant.ofEpochMilli(d1.getTimeInMillis());
    Instant d2i = Instant.ofEpochMilli(d2.getTimeInMillis());

    LocalDateTime startDate = LocalDateTime.ofInstant(d1i, ZoneId.systemDefault());
    LocalDateTime endDate = LocalDateTime.ofInstant(d2i, ZoneId.systemDefault());

    return ChronoUnit.WEEKS.between(startDate, endDate);
}

关于java - 获取两个日期之间的周数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963147/

相关文章:

java - JList 包含目录中的文件列表

java - 如何在 Java 中编写相等方法

java - JDBC4 插入日期 "0001-01-01"

java - 检查 Date 对象和 Calendar 对象是否在同一个月的最有效方法

java - 如何区分两个 JodaTime LocalTime 时间戳?

java - 如果连接器端口为 8081,如何从 apache tomcat 中的 URL 中删除端口号

java - 两个数之和等于给定数

javascript - 如何将日期格式转换为 `2019-04-24T04:27:14.867Z`

java - 当间隔大于一年时,jodatime 截断剩余月份

java - 在 Java 中使用 Joda 查找两个日期之间的差异