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作为周数。我不知道我做错了什么。 提前谢谢。
答案 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;