我试图计算2个日期对象之间的天数

时间:2014-09-07 08:27:42

标签: java

public static int countWeeks() {
    // setting dates
    Calendar calStart = GregorianCalendar.getInstance();
    calStart.set(2014, 8, 30);
    Date dateStart = calStart.getTime();

    Date dateEnd = new Date();

    // count days and weeks
    int diffInDays = Days.daysBetween(new DateTime(dateStart), new DateTime(dateEnd)).getDays(); //         int weekNumber = (int) diffInDays / 7;

    return weekNumber;

}

我试图计算今天和上周之间的天数和周数,但我总是得到-3作为周数。我不知道我做错了什么。 提前谢谢。

4 个答案:

答案 0 :(得分:1)

首先,我会假设

int weekNumber = (int) diffInDays / 7;

未被注释,否则您将收到编译错误。

现在,正如我的评论中所解释的那样,通过

calStart.set(2014, 8, 30);

您要在9月底设置日期,而不是8月。所以,现在提前3周,你得到一个-3。使用Calendar常量。

calStart.set(2014, Calendar.AUGUST, 30);

答案 1 :(得分:0)

你得到-3作为周数,因为你已经评论了它,因此它显示了一些随机值。另请注意,8显示9月份不是8月,因为月份是0。

因此,如果你的目标是8月,那么你可以试试这个:

calStart.set(2014, 7, 30);
                   ^^-- This represents August month

答案 2 :(得分:0)

您将startdate设置为9月30日,因为te month是零基础!

请参阅java.util.Calendar中的文档:

  

public final void set(int year,          int月,          int date)设置日历字段YEAR,MONTH和DAY_OF_MONTH的值。其他日历字段的先前值为   保留。如果不需要,请先调用clear()。参数:年份    - 用于设置YEAR日历字段的值。 month - 用于设置MONTH日历字段的值。月值基于0。例如,0   一月。 date - 用于设置DAY_OF_MONTH日历的值   领域。另见:

答案 3 :(得分:0)

如果您使用的是Java 8,则可以使用Java时间API:

LocalDate start = LocalDate.of(2014, 8, 30);
LocalDate end = LocalDate.now();
long days = ChronoUnit.DAYS.between(start, end);
return (int) days / 7;