Java判断一个时间是否在某个时间区间内

/**
     * 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
     * 
     * @param nowTime 当前时间
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
        if (nowTime.getTime() == startTime.getTime()
                || nowTime.getTime() == endTime.getTime()) {
            return true;
        }

        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);

        Calendar begin = Calendar.getInstance();
        begin.setTime(startTime);

        Calendar end = Calendar.getInstance();
        end.setTime(endTime);

        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }

测试:

public static void main(String[] args) throws ParseException {
		String dates = DateUtils.getDate("yyyy-MM-dd HH:mm");// 当前时间
		String strDateBegin = "2021-02-22 23:59";
		String strDateEnd = "2021-06-02 23:59";
		String format = "yyyy-MM-dd HH:mm";
        Date nowTime = new SimpleDateFormat(format).parse(dates);
        Date startTime = new SimpleDateFormat(format).parse(strDateBegin);
        Date endTime = new SimpleDateFormat(format).parse(strDateEnd);
        System.out.println(isEffectiveDate(nowTime, startTime, endTime));
	}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Java中实现在某个时间区间内返回数据,您可以使用Java中的日期和时间类来处理。具体的步骤如下: 1. 获取当前时间:使用`LocalDateTime.now()`方法获取当前的日期和时间。 2. 定义时间区间:根据您的需求,使用`LocalDateTime`类的`of`方法创建开始时间和结束时间。例如,`LocalDateTime start = LocalDateTime.of(2022, 1, 1, 0, 0)`表示开始时间为2022年1月1日0时0分。 3. 过滤数据:遍历您的数据集合,筛选出在时间区间内的数据。可以使用`Stream`流的`filter`方法进行过滤,判断每条数据的时间是否在指定的时间区间内。 以下是一个示例代码: ```java import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<Data> dataList = getDataList(); // 假设这是您的数据集合 LocalDateTime start = LocalDateTime.of(2022, 1, 1, 0, 0); // 开始时间 LocalDateTime end = LocalDateTime.of(2022, 1, 31, 23, 59); // 结束时间 List<Data> filteredDataList = new ArrayList<>(); for (Data data : dataList) { LocalDateTime dataTime = data.getTime(); // 假设Data类有一个getTime()方法返回时间属性 if (dataTime.isAfter(start) && dataTime.isBefore(end)) { filteredDataList.add(data); } } // 处理筛选后的数据 for (Data data : filteredDataList) { System.out.println(data); } } // 假设Data类的定义 static class Data { private LocalDateTime time; public Data(LocalDateTime time) { this.time = time; } public LocalDateTime getTime() { return time; } @Override public String toString() { return "Data{" + "time=" + time + '}'; } } // 假设这是您的数据集合 static List<Data> getDataList() { List<Data> dataList = new ArrayList<>(); dataList.add(new Data(LocalDateTime.of(2022, 1, 1, 10, 0))); dataList.add(new Data(LocalDateTime.of(2022, 1, 2, 9, 30))); dataList.add(new Data(LocalDateTime.of(2022, 1, 3, 15, 45))); dataList.add(new Data(LocalDateTime.of(2022, 1, 4, 8, 15))); dataList.add(new Data(LocalDateTime.of(2022, 1, 5, 14, 0))); return dataList; } } ``` 这是一个简单的示例,您可以根据实际需求进行适当修改。希望对您有帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值