首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查时间(开始日期和结束日期)是否缩短了一个时间段

问检查时间(开始日期和结束日期)是否缩短了一个时间段
EN

Stack Overflow用户
提问于 2015-10-14 09:18:31
回答 3查看 146关注 0票数 0

如何检查给定的开始日期和结束日期是否缩短了特定的时间段(火车时间)。

我做了以下工作:

代码语言:javascript
复制
if ((startdate >= train.getStartDate()) &&
 (enddate <= train.getEndDate())) {
   // doSomething();
}

当给定时间段之间的时间精确时,doSomething()只会被执行。但我也希望,当时间重叠时,doSomething()会被执行。

例如:

  • 开始日期: 14.10.2015 15.00
  • 截止日期: 16.10.2015 17.00
  • 时间表: 15.10.2015 10.00至19.10.2015

在本例中,它是重叠的,我希望执行doSomething()。有什么解决办法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-14 09:37:31

如果您想坚持使用长值,我将执行以下操作

代码语言:javascript
复制
if (!((train.getEndDate() < startdate) || (train.getStartDate() > enddate))) {...}

或者,您可能希望将long-vales转换为java.util.Date (new Date(long value)),以便可以使用Date类。

还有一个非常不错的Joda time 2.2 API,它有一个Interval-class,它提供了以下功能

代码语言:javascript
复制
overlap(ReadableInterval interval)
      Gets the overlap between this interval and another interval.
票数 0
EN

Stack Overflow用户

发布于 2015-10-14 09:43:26

Date有after和before方法

代码语言:javascript
复制
    if (yourDate.after(startDate) && yourDate.before(endDate)) {
        //doSomething
    }
票数 0
EN

Stack Overflow用户

发布于 2015-10-14 09:56:16

你也可以试试番石榴橙子。下面是一个示例:

代码语言:javascript
复制
public class RangesTest {

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH.mm");

@Test
public void testDateRange() throws ParseException {
    Range<Date> timePeriod = createClosedDateRange("15.10.2015 10.00","19.10.2015 10.00");

    assertTrue(timePeriod.isConnected(createClosedDateRange("14.10.2015 15.00", "16.10.2015 17.00")));
    assertTrue(timePeriod.isConnected(createClosedDateRange("14.10.2015 15.00", "20.10.2015 17.00")));
    assertFalse(timePeriod.isConnected(createClosedDateRange("14.10.2015 15.00", "15.10.2015 09.59")));
    assertFalse(timePeriod.isConnected(createClosedDateRange("20.10.2015 17.01", "21.10.2015 17.00")));
}

private Range<Date> createClosedDateRange(String startDate, String endDate) throws ParseException {
    Date startdate= sdf.parse(startDate);
    Date enddate = sdf.parse(endDate);
    return Range.closed(startdate, enddate);
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33121347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档