当前位置: 首页 > 面试题库 >

乔达时间:如何获取某个日期间隔的工作日日期?

冯翔
2023-03-14
问题内容

我有两个LocalDate,它们代表某个时间间隔。现在,我必须获取此间隔包含的所有星期五的LocalDates。最简单的方法吗?


问题答案:

解决方案:懒惰地走一个星期。

import org.joda.time.LocalDate;
import java.util.Iterator;

public class DayOfWeekIterator implements Iterator<LocalDate>{
    private final LocalDate end;
    private LocalDate nextDate;

    public DayOfWeekIterator(LocalDate start, LocalDate end, int dayOfWeekToIterate){
        this.end = end;
        nextDate = start.withDayOfWeek(dayOfWeekToIterate);
        if (start.getDayOfWeek() > dayOfWeekToIterate) {
            nextDate = nextDate.plusWeeks(1);
        }
    }

    public boolean hasNext() {
        return !nextDate.isAfter(end);
    }

    public LocalDate next() {
        LocalDate result = nextDate;
        nextDate = nextDate.plusWeeks(1);
        return result;
    }

    public void remove() {
        throw new UnsupportedOperationException();
    }
 }

测试

import org.joda.time.DateTimeConstants;
import org.joda.time.LocalDate;

public class DayOfWeekIteratorTest {

    public static void main(String[] args) {

        LocalDate startDate = new LocalDate(2010, 12, 1);//1st Dec 2010
        LocalDate endDate = new LocalDate(2010, 12, 31);//31st Dec 2010
        DayOfWeekIterator it = new DayOfWeekIterator(startDate, endDate, DateTimeConstants.FRIDAY);
        while (it.hasNext()) {
            System.out.println(it.next());
        }

    }
}


 类似资料:
  • 问题内容: 无论如何,是否可以验证给定日期(yyyy-MM- dd)是否为有效日期?它也应该处理leap年。例如(2015-02-29)应该无效。我将日期作为字符串检索,并将其放入joda DateTime对象。 问题答案: 我认为,这应该对您有用(如果您想保持简单)。 你必须做一个。

  • 问题内容: 我有 星期几 :2(如果星期从星期一开始,则应该与星期二匹配)。 从这个数字中可以找到使用Joda Time在Java中的一天的名称吗?在javascript中,使用moment.js相当容易: 问题答案: 至少这是可行的,尽管我认为它不太好: 不幸的是,Joda-Time不提供星期几的枚举(java.time提供)。我还没有在庞大的api中快速找到另一种方法。也许一些乔达专家知道更好

  • 问题内容: 如何从Python中的日期时间对象获取日期名称(例如星期一,星期二,星期三,星期四,星期五,星期六和星期日)? 因此,例如,应该给我。 问题答案: 有关datetime.now,datetime.strftime以及有关strftime的更多信息,请参见Python文档。

  • 问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em

  • 问题内容: 我想计算两个给定日期之间的工作日数。例如,如果我要计算2013年1月10日至2013年1月15日之间的工作日,则结果必须为3个工作日(我没有考虑该间隔中的最后一天,因此我减去了周六和周日)。我有以下适用于大多数情况的代码,除了我的示例中的代码。 我该怎么做?我需要整天检查一下吗?还是有一个简单的方法来做到这一点。 问题答案: 请,请使用日历表。SQL Server对国定假日,公司活动,

  • 问题内容: 刚从操场开始。我正在尝试创建一个简单的应用程序。 我创建了一个这样的日期对象: 我如何获得当前时间?在其他语言中,我可以执行以下操作: 但是我找不到像这样的任何属性/方法。我找到了一种方法。我应该用那个吗?如果是这样,怎么办? 问题答案: Swift 3更新: 我这样做: 在Objective-c中看到相同的问题,如何从NSDate获得小时和分钟?与Nate的答案相比,您将获得一个数字