Joda时间:最近一周和一个月

时间:2011-08-20 09:37:03

标签: jodatime

获取最近完整周和最近完整月份的开始/结束日期的最佳方法是什么。

I.E鉴于今天的日期,如何找出刚刚完成的一周,同样的月份。

2 个答案:

答案 0 :(得分:5)

我得到了解决方案

    LocalDate today = new LocalDate()

    LocalDate lastWeek = today.minusWeeks(1)
    start= lastWeek .dayOfWeek().withMinimumValue().minusDays(1)
    end = lastWeek.dayOfWeek().withMaximumValue().minusDays(1)

    LocalDate lastMonth = today.minusMonths(1)
    timeStart = lastMonth.dayOfMonth().withMinimumValue()
    timeEnd = lastMonth.dayOfMonth().withMaximumValue()

答案 1 :(得分:4)

一个月很容易 - 比如:

LocalDate endOfPreviousMonth = date.withDayOfMonth(1).minusDays(1);

一个星期它有点棘手。你可以这样做:

LocalDate previousSunday = date.withDayOfWeek(DateTimeConstants.MONDAY)
                               .minusDays(1);

...但我不清楚withDayOfWeek是否会一直转到之前的星期一或最近的星期一。 (这是我要在Noda Time中找出并给出选择的东西......)

相反,你可以试试这个:

// Go back 1 day for Monday, 2 days for Tuesday etc
LocalDate previousSunday = date.minusDays(date.getDayOfWeek());

一旦你完成了一周或一个月的结束,就可以轻松地进入 start

LocalDate startOfPreviousMonth = endOfPreviousMonth.withDayOfMonth(1);
LocalDate startOfPreviousWeek = previousSunday.minusDays(6);