如果可能的话,在以下情况下,我希望使用joda或非joda解决方案
假设我的一周从2012年5月2日开始,给定的当前日期为02/22/2011。我需要计算给定当前日期的星期开始和结束日期。因此,我的解决方案的星期应该从02/19开始,而星期在02/25结束。为简单起见,我将我的工作日设置为02/05/2011,但是可能是任何一天,我的工作日始终为7天。
我现有的代码如下,但似乎无法按预期工作。
public Interval getWeekInterval(Date calendarStartDate, Date date) { Calendar sDate = Calendar.getInstance(); sDate.setTime(getMidnightDate(calendarStartDate)); Calendar eDate = Calendar.getInstance(); eDate.setTime(date); Calendar weekStartDate = (Calendar) sDate.clone(); logger.debug("Date:" + sDate.getTime()); while (sDate.before(eDate)) { weekStartDate = sDate; sDate.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1); } return new Interval(weekStartDate.getTime(), sDate.getTime()); }
试试这个(伪代码):
// How many days gone after reference date (a known week-start date) daysGone = today - referenceDate; // A new week starts after each 7 days dayOfWeek = daysGone % 7; // Now, we know today is which day of the week. // We can find start & end days of this week with ease weekStart = today - dayOfWeek; weekEnd = weekStart + 6;
现在,我们可以 将 所有这些 缩短 为两行:
weekStart = today - ((today - referenceDate) % 7); weekEnd = weekStart + 6;
请注意, 我们减去了整数之类的日期值来显示算法。您必须正确编写Java代码。