-5
A
回答
0
我不是Java编码器,但是我是编码器。以下是我如何解决这个问题:
1)计算两个日期之间的日子(又名DATESPAN)。我相信Java有这个功能。 2)获得两个日期中的'星期几'(假设星期一= 1)。我相信Java也有这个功能。我们需要知道是否是星期一。
3)如果DATESPAN < 7使用此逻辑: 回答=结束日期数> DATESPAN?0:1
4)IF DATESPAN> = 7继续得到解答:
5)划分的DATESPAN除以7.
6)如果有除法余数,则使用商数的底面值作为答案。
7)如果没有余数,检查开始日期和结束日期。如果其中一个星期一商是答案,如果不是商 - 1是答案
2
有多种方法可以去。这里有一个建议:
public static long noOfMondaysBetween(LocalDate first, LocalDate last) {
if (last.isBefore(first)) {
throw new IllegalArgumentException("first " + first + " was after last " + last);
}
// find first Monday in interval
LocalDate firstMonday = first.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
// similarly find last Monday
LocalDate lastMonday = last.with(TemporalAdjusters.previous(DayOfWeek.MONDAY));
// count
long number = ChronoUnit.WEEKS.between(firstMonday, lastMonday);
// add one to count both first Monday and last Monday in
return number + 1;
}
例如,noOfMondaysBetween(LocalDate.of(2017, Month.JUNE, 15), LocalDate.of(2017, Month.JUNE, 15))
返回0。它可能是一个有点微妙的代码利用这种情况考虑:第一个星期一是6月19日和最后一个是6月12日这两个之间的周计数星期一是-1,所以当我加1时,结果是0,这是正确的。要算上周一六月:
System.out.println(noOfMondaysBetween(LocalDate.of(2017, Month.MAY, 31), LocalDate.of(2017, Month.JULY, 1)));
结果:
4
如果您打算在包括计数的第一日期(如果它是一个星期一),使用nextOrSame(DayOfWeek.MONDAY)
代替next(DayOfWeek.MONDAY)
。同样包含第二个日期使用previousOrSame(DayOfWeek.MONDAY)
。
相关问题
- 1. 两个日期之间的星期日数量?
- 2. 在db2中计算两个日期之间的星期日的数量
- 3. MySQL的算两个日期之间的星期在一个表
- 4. 找到两个日期之间的星期日数,如果星期日来自两个日期之间,然后减去星期日
- 5. 得到两个日期之间的日期,按星期几
- 6. 你如何计算两个日期之间的星期数?
- 7. 包含两个日期之间的星期数
- 8. 在两个日期之间获得完整的“星期一至星期日”星期
- 9. 在两个日期之间得到星期一mysql
- 10. 两个日期之间的特定日期的数量
- 11. 如何计算两个日期之间有多少星期日?
- 12. 检查日期是在Java中的两个日期之间
- 13. 上次星期一和下个星期日之间的MySQL日期
- 14. 两个日期之间的星期/月的差异
- 15. 两个Java日期之间的差异?
- 16. 如何找到两个日期之间的星期差异
- 17. 如何获得两个日期之间的星期差异
- 18. 如何计算mysql中两个日期之间的星期六和星期日的总数
- 19. 两个字段中的两个日期之间的日期
- 20. 如何在Java中找到前两个星期一的日期?
- 21. 查找日期向量中的日期是否落在两个日期之间
- 22. 如何在两个日期之间获得星期
- 23. 在日期变量的两个日期之间选择行
- 24. 如何计算C#中两个日期之间的天数减去星期天?
- 25. 如何计算excel中两个日期范围之间的星期数
- 26. 获取两个日期之间的每个星期五的数据
- 27. 如何在使用sql的表中的两个日期之间插入星期六和星期日?
- 28. 两个日期之间的月数SAS
- 29. 两个日期之间的月数
- 30. 两个日期之间的总天数
你可以发布你的代码,以便我们能够理解你正在采取什么方法 – Blip
你是什么意思的“*之间*两个日期”?搜索范围中是否包含开始日期和结束日期?可以说,开始日期是一些星期一,结束日是下一个星期一。应该是0星期一还是2星期? – Pshemo
在发布之前,请始终彻底搜索堆栈溢出。你可以假定任何基本的日期时间主题已经被询问和回答。 –