1

假设我有两个 LocalDate 对象,fromDate 和 toDate。我需要知道间隔内有哪些工作日 - 星期一、星期二等。而且,我还想知道哪些 daysOfMonth - 1 日、2 日,或者例如仅 20 日 - 从 20 日到 23 日。Joda 时间库中是否有任何有用的工具/方法可以帮助我?我不是在询问特定的算法,我可以自己编写它,但我不确定 Joda 的功能——也许它已经有了我可以重用的东西。

4

3 回答 3

1

这与我想的差不多:

天数之间

或者可能是这样的(假设只有两个不同的月份):

public Boolean dayOfMonthExistInPeriod(final int dayOfMonth, final LocalDate from, final LocalDate until){
        final DateMidnight tested = new DateMidnight(from.getYear(), from.getMonthOfYear(), dayOfMonth);
        final DateMidnight tested2 = new DateMidnight(until.getYear(), until.getMonthOfYear(), dayOfMonth);
        final Interval interval = new Interval(from.toDateMidnight(), until.toDateMidnight());
        return interval.contains(tested) && interval.contains(tested2);
    }
于 2012-04-11T13:06:15.340 回答
1
public static boolean isDayBetween(int dtc, DateTime from, DateTime to)
   {
      final int dayOfWeekFrom = from.dayOfWeek().get();
      final int daysBetween = Days.daysBetween(from, to).getDays();
      if (dtc >= dayOfWeekFrom && dtc <= (dayOfWeekFrom + daysBetween))
         return true;
      return false;
   }  

使用方法

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd");
final DateTime from = dtf.parseDateTime("2000-07-08");
final DateTime to = dtf.parseDateTime("2000-07-13");
boolean res = isDayBetween(from, to, DateTimeConstants.THURSDAY)
于 2012-04-19T10:47:30.863 回答
0
于 2018-02-28T21:32:45.790 回答