日期工具类 DateTools

本文介绍了一个名为DateTools的日期工具类,该类提供了一种用于获取两个时间段交集的方法。通过转换时间戳并比较不同时间段的开始与结束时间来确定它们之间的交集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了跟其他日期工具类进行区分起名字DateTools

public class DateTools {

    /** The DAT e_ forma t1. */
    public static String DATE_FORMAT1 = "yyyy-MM-dd HH:mm:ss";

/**
     * 获取两个时间段的交集
     * @param s1
     * @param e1
     * @param s2
     * @param e2
     * @return
     */
    public static Map<String, LocalDateTime> getOverlapDuration(LocalDateTime s1,LocalDateTime e1,LocalDateTime s2,LocalDateTime e2){
        Map<String, LocalDateTime> localDateTimeMap = new HashMap<>();
        //是否有交集
        long s1InMillis = Timestamp.valueOf(s1).getTime();
        long e1InMillis = Timestamp.valueOf(e1).getTime();
        long s2InMillis = Timestamp.valueOf(s2).getTime();
        long e2InMillis = Timestamp.valueOf(e2).getTime();

        long overlapStartTime = 0;
        long overlapEndTime = 0;
        if((s1InMillis>=s2InMillis&&s1InMillis<=e2InMillis)
                ||(e1InMillis>=s2InMillis&&e1InMillis<=e2InMillis)){
            overlapStartTime = s1InMillis>=s2InMillis?s1InMillis:s2InMillis;
            overlapEndTime = e1InMillis<=e2InMillis?e1InMillis:e2InMillis;
        }
        LocalDateTime start = LocalDateTime.ofInstant(Instant.ofEpochMilli(overlapStartTime), ZoneId.systemDefault());
        LocalDateTime end = LocalDateTime.ofInstant(Instant.ofEpochMilli(overlapEndTime), ZoneId.systemDefault());
        localDateTimeMap.put("start", start);
        localDateTimeMap.put("end" , end);
        return localDateTimeMap;
    }

}

 

转载于:https://www.cnblogs.com/mengjianzhou/p/9066397.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值