Java 我正在尝试计算两个日期对象之间的休息天数
我试图计算从今天到上周的天数和周数,但我总是得到-3作为周数。我不知道我做错了什么。Java 我正在尝试计算两个日期对象之间的休息天数,java,Java,我试图计算从今天到上周的天数和周数,但我总是得到-3作为周数。我不知道我做错了什么。 提前谢谢。你的周数是-3,因为你已经把它注释掉了,所以它显示了一些随机值。还要注意,8表示9月份而不是8月份,因为月份是以0为基础的 因此,如果您的目标是8月,那么您可以尝试以下方法: public static int countWeeks() { // setting dates Calendar calStart = GregorianCalendar.getInstance();
提前谢谢。你的周数是-3,因为你已经把它注释掉了,所以它显示了一些随机值。还要注意,8表示9月份而不是8月份,因为月份是以0为基础的 因此,如果您的目标是8月,那么您可以尝试以下方法:
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;
}
首先,我假设
calStart.set(2014, 7, 30);
^^-- This represents August month
未注释,否则将出现编译错误
现在,正如我在评论中解释的那样
int weekNumber = (int) diffInDays / 7;
您将日期设置为setember的末尾,而不是8月底。所以,现在比现在提前3周,所以你会得到一个-3
。使用日历
常量
calStart.set(2014, 8, 30);
您将起始日期设置为9月30日,因为该月为零基数 请参阅java.util.Calendar中的文档: 公共最终无效集(整数年, 整月, int date)设置日历字段“年”、“月”和“月中的日”的值。其他日历字段的先前值为 保留。如果不需要,请首先调用clear()。参数:年份 -用于设置“年度日历”字段的值。月-用于设置月日历字段的值。月份值以0为基础。e、 g.,0 一月份。日期-用于设置日历中的日期的值 领域另见:
如果您使用的是Java 8,则可以使用Java时间API:
calStart.set(2014, Calendar.AUGUST, 30);
这是什么
天
课?如果它是JodaTime,您应该解释它,因为它不是javaapi的一部分int weekNumber
被注释掉了吗?那么,weekNumber
在哪里声明呢?另外,请记住日历中的月份是以0为基础的,所以实际上您将开始时间设置为setember,30。最好使用日历。八月。获取毫秒,从开始减去结束。除以1000*60*60*24。如果代码被注释,他会得到一个编译错误…@SJuan76:-是的,这是有道理的。那么问题可能出在月份上,因为gettime()将获得当前日期,而8是9月,而不是8月,我猜OP在想:)周号确实没有被禁止评论xd它现在工作得很好谢谢:p
LocalDate start = LocalDate.of(2014, 8, 30);
LocalDate end = LocalDate.now();
long days = ChronoUnit.DAYS.between(start, end);
return (int) days / 7;