-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. 兩個Java日期之間的右期
- 7. 獲取PHP中兩個日期之間的星期數
- 8. 選擇日期這個星期一和這個星期五之間的日期
- 9. 使用JavaScript的兩個日期之間的星期數
- 10. 包含兩個日期之間的星期數
- 11. 你如何計算兩個日期之間的星期數?
- 12. 在兩個日期之間獲得完整的「星期一至星期日」星期
- 13. 在兩個日期之間得到星期一mysql
- 14. 如何迭代Groovy中兩個日期之間的星期?
- 15. 兩個日期之間的特定日期的數量
- 16. 如何計算兩個日期之間有多少星期日?
- 17. 檢查日期是在Java中的兩個日期之間
- 18. 上次星期一和下個星期日之間的MySQL日期
- 19. 兩個日期之間的星期/月的差異
- 20. 兩個Java日期之間的差異?
- 21. Java:兩個日期之間的差異
- 22. 如何找到兩個日期之間的星期差異
- 23. 計算兩個日期之間的特定星期幾
- 24. 如何獲得兩個日期之間的星期差異
- 25. Android獲取兩個日期之間的星期幾名稱
- 26. 獲取兩個選定日期之間的星期幾
- 27. 查找兩個日期之間的星期列表
- 28. 如何計算mysql中兩個日期之間的星期六和星期日的總數
- 29. 兩個字段中的兩個日期之間的日期
- 30. 如何在Java中找到前兩個星期一的日期?
你可以發佈你的代碼,以便我們能夠理解你正在採取什麼方法 – Blip
你是什麼意思的「*之間*兩個日期」?搜索範圍中是否包含開始日期和結束日期?可以說,開始日期是一些星期一,結束日是下一個星期一。應該是0星期一還是2星期? – Pshemo
在發佈之前,請始終徹底搜索堆棧溢出。你可以假定任何基本的日期時間主題已經被詢問和回答。 –