我在分配给具有sdate(ShowDate)和hdate(HideDate)的storeID的日历中有一个特定事件.现在对于具有此storeID的每个新事件,我需要确保与现有日期周期没有重叠.那有意义吗?我怎么做?我读了一些东西,但无法弄清楚如何"仅在不重叠时插入".
我的 Codeigniter 应用程序中有 2 个日期范围,我想计算这些日期范围之间相交的天数。有任何想法吗?
日期 1 开始 = YYYY-MM-DD;日期 1 结束 = YYYY-MM-DD;
日期2开始 = YYYY-MM-DD; 日期2结束 = YYYY-MM-DD;
我刚刚问过这个问题并且它已被标记为已经回答,但无论是谁做了这个问题显然都不明白这个问题.
这篇文章被标记为重复的问题,
但它们甚至不是一样的.
我正在寻找两个DatePeriods中的重叠时间量,而不是两个日期之间的差异.
"DatePeriod"由两个日期组成,我正在寻找两个DatePeriod之间的重叠量.
还有另一篇文章,我发现这里回答了我的一半问题,
并且它工作得很好,但它没有给我两个日期范围之间重叠的时间量.它只确定它们是否重叠.我需要知道它们重叠的分钟数.所以这是我原来的问题......
我假设有一个非常简单的方法可以做到这一点,但我已经看了一遍,找不到解决方案.逻辑很简单:找到给定两个DatePeriods的重叠分钟数.
例如,
- 我有$startDate1和$endDate1作为第一个日期范围.
- 我有$startDate2和$endDate2作为第二个日期范围.
(为了演示,格式是'Y-m-d H:i'.)
假设$startDate1 = '2015-09-11 09:15'和$endDate1 = '2015-09-13 11:30'.
假设$startDate2 = '2015-09-13 10:45'和$endDate2 = '2015-09-14 12:00'.
我希望45分钟重叠的结果.怎么能实现这一目标?
我已经看到这使用两个DateTimes完成,但这不是我正在寻找的.
datePeriod由两个DateTime组成,我正在寻找两个DatePeriod之间的差异.
我在 Django 中查找重叠的日期范围时遇到问题。我有两个模型 ,reunion它有一个日期范围:
class reunion(models.Model):        
    resource = models.ForeignKey(resource, on_delete=models.CASCADE)
    start = models.DateTimeField()
    end = models.DateTimeField()
    title = models.CharField(max_length=100)
和resource模型:
class resource (models.Model):
    site = models.ForeignKey(site, on_delete=models.CASCADE)
    name = models.CharField(max_length=60)    
    def isAvaible(self, endDate, initialDate):
        try:
            self.reunion_set.get(Q(start__lt=endDate) | Q(end__gt=initialDate))  
            return False
        except:
            return True
当我需要在特定日期范围内进行新的聚会时,我需要找到不重叠的资源,因此我使用以下方法:
def getAvaibleAccount(initialDate, endDate):
    avaibleResources = resource.objects.all()
    for avaibleResource in avaibleResources:
        if avaibleResource.isAvaible(initialDate,endDate):
            return avaibleResource           
    return None
但我的代码表示日期范围: (12/30/2019 11:00 - 12/30/2019 12:00) 与 (12/31/2019 11:30 - 12/31/2019 12:30) 重叠如果只是比较时间而不是日期。我已经搜索了很多,但没有任何运气。
我的错误在哪里?
我将日期作为字符串获取并用 解析它们 …
如果我有两个日期范围(例如5月1日 - 5月31日和5月23日 - 6月5日),那么最好的方法是找出这两个时期在PHP中重叠的天数(因此会返回9)?有没有办法使用DatePeriod对象?
编辑(希望)澄清我的问题:
基本上我想要一个函数,给定任何两个日期范围,将返回两个日期范围之间共同的天数.如果有重叠,它将返回重叠天数,否则它将返回0.我认为这可以通过为每个范围创建一个日期数组,循环遍历它们以查找相同的日期,并使用变量来计算比赛的数量 - 但我正在寻找更优雅的东西.
我有一个价格表,有两列:开始日期和结束日期(用于促销价格)。
我正在尝试创建一个查询来检查给定的日期范围是否不属于另一个已经存在的日期范围。
我一直在尝试使用这个查询:
SELECT *
FROM tbl_preco
WHERE isActive = 1 AND (start_date between '2014-12-11 15:45:00' AND '2014-12-13 11:45:00'
        OR end_date between '2014-12-11 15:45:00' AND '2014-12-13 11:45:00')
问题是:
2014-12-10 15:30:00从到存在促销价格2014-12-13 14:30:00,因此两个 BETWEEN 指令都没有捕获它,即使给定范围实际上在数据库中的范围内。
                   |------GIVEN RANGE-------|
       |-------- RANGE IN DB --------|
上面的示例应返回 TRUE,应用程序将告诉用户给定范围内已经有促销价格。
经过大量思考和谷歌搜索后,我找不到解决问题的方法,希望您能帮助我。
我有一个大数据框,其中一个 ID 列可以重复 2 次以上,一个开始和结束日期列将构成一个时间段。我想知道,按 ID 分组,该 ID 的任何时间段是否与另一个时间段重叠,如果是,则通过创建一个新列来标记它,例如,说明该 ID 是否重叠。
这是一个已经包含所需新列的示例数据框:
structure(list(ID= c(34L, 34L, 80L, 80L, 81L, 81L, 81L, 94L, 
94L), Start = structure(c(1072911600, 1262300400, 1157061600, 
1277935200, 1157061600, 1277935200, 1157061600, 1075590000, 1285891200
), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1262214000, 
1409436000, 1251669600, 1404079200, 1251669600, 1404079200, 1251669600, 
1264892400, 1475193600), class = c("POSIXct", "POSIXt"), tzone = ""), 
    Overlap = c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, 
    FALSE, FALSE)), .Names = c("ID", "Start", "End", "Overlap"
), row.names = …我正在尝试计算 2 个 localDate 之间的天数
我从这个答案中获得灵感: https: //stackoverflow.com/a/325964这个问题确定两个日期范围是否重叠
问题是,这个问题使用了 dateTime,我认为它已经过时了,因此使用 localDate 的原因。
有谁知道使用 localDate 来实现上述答案中的算法的类似方法。
minus 方法不允许减去另一个 localDate。
我尝试过使用
ChoronoUnit.DAYS.between(LD1, LD2.plusDays(1)) //include the final day in the count
但有时会产生负数,因此算法会失败,因为它选择最小的数字作为天数重叠
我正在使用算法编写调度程序。在算法的最后阶段,我需要查看时间表(创建的时间表)以查看学生当时是否已被分配到班级。
因此,我们有:
Current Class Start Time: (2017, 02, 09, 10, 00, 00)
Current Class Finish Time: (2017, 02, 09, 11, 00, 00)
此时我们就通过查询时间表来查看A同学被分配到的其他班级:
例如,假设在他们已被分配的同一日期:
Class 'Z' Start Time: (2017, 02, 09, 09, 00, 00)
Class 'Z' Finish Time: (2017, 02, 09, 12, 00, 00)
现在我想找到'Z'班级的时间范围并将其与当前班级的时间范围进行比较。
DateTime startClassZ = new DateTime(2017, 02, 09, 09, 00, 00);
DateTime endClassZ = new DateTime(2017, 02, 09, 12, 00, 00);
DateTime StartCurrent = new DateTime(2017, 02, 09, 10, 00, 00);
DateTime StartCurrent = new DateTime(2017, …所以我创建了一个名为isDateOverlapping. 它接受(所有类型LocalDate):
这个函数的作用是告诉我 2 个日期周期是否重叠。
例如,如果我有 1 个时期2019-06-15 to 2019-06-18和另一个时期来自2019-06-15 to 2019-06-12. 它将返回 true,因为 2 个日期时间段重叠。
但是我的函数似乎并不总是返回正确的答案。能否请你帮忙。
public boolean isDateOverlapping(LocalDate start1, LocalDate end1, LocalDate start2, LocalDate end2) {
    if (start1.isAfter(start2) && start2.isBefore(start1)) {
        return true;
    } else if (end1.isBefore(end2) && start1.isAfter(start2)) {
        return true;
    } else if (start1.isAfter(end1) && end2.isBefore(start2)) {
        return true;
    }
    return false;
}