Swift时间交集判断

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let dft = DateFormatter()
        dft.dateFormat = "HH:mm"
        
        let times = [["08:30", "12:25"], ["12:33", "15:28"]]
        
        let dynaStartTime = stringToDate(string: "15:29", dateFormat: "HH:mm")
        let dynaEndTime = stringToDate(string: "20:00", dateFormat: "HH:mm")
        
        for item in times {
            let fixedStartTime = stringToDate(string: item[0], dateFormat: "HH:mm")
            let fixedEndTime = stringToDate(string: item[1], dateFormat: "HH:mm")
            let result = checkTimesHasOverlap(dynaStartTime: dynaStartTime, dynaEndTime: dynaEndTime, fixedStartTime: fixedStartTime, fixedEndTime: fixedEndTime)
            print("\(result)")
        }
    }
    
    //字符串 -> 日期
    func stringToDate(string:String, dateFormat:String) -> Date {
        let formatter = DateFormatter()
        formatter.locale = Locale.init(identifier: "zh_CN")
       formatter.timeZone = TimeZone(secondsFromGMT: 0)
        formatter.dateFormat = dateFormat //"yyyy-MM-dd HH:mm:ss"
        let date = formatter.date(from: string)
        return date ?? Date()
    }

    /**
     * 判断两个时间范围是否有交集
     *
     * @param dynaStartTime  比较时间段开始时间
     * @param dynaEndTime    比较时间段结束时间
     * @param fixedStartTime 参考时间段开始时间
     * @param fixedEndTime   参考时间段结束时间
     * @return
     */
    func checkTimesHasOverlap(dynaStartTime: Date, dynaEndTime: Date, fixedStartTime: Date, fixedEndTime: Date) -> Bool {
        return !(dynaEndTime < fixedStartTime || dynaStartTime > fixedEndTime);
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容