一尘不染

给定当前日期和星期开始时间,获取星期开始和结束日期

java

如果可能的话,在以下情况下,我希望使用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());
}

阅读 200

收藏
2020-09-09

共1个答案

一尘不染

试试这个(伪代码):

// 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代码。

2020-09-09