首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间段(PHP)

问时间段(PHP)
EN

Stack Overflow用户
提问于 2014-07-19 10:31:43
回答 4查看 285关注 0票数 0

我试图找出一个时间段是否在一个时间段内。我有我的参考时间段和比较时间段。让我举一个例子:

  • 时间段A(参考)为1.1.2014至1.2.2014 (tt.mm.yyyy)。
  • 时间段B(比较)为1.4.2014至1.5.2014。

=>,这是完全可以的。

  • 时间周期C(参考)为1.1.2014至1.3.2014
  • 时间段D(比较)为1.2.2014至1.5.2014。

=>不好,因为D在C。

我希望你能得到我想要的。我试图使serval <=>如果动作,但这开始变得巨大和缓慢。也许有更快的方法来做到这一点。

而且,MySQL能够做这样的事情吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-19 10:43:55

你可以用php timestamp试试这个

代码语言:javascript
复制
$reference_start_date = "1.1.2014";
$reference_end_date = "1.2.2014";

$comparative_start_date = "1.4.2014";
$comparative_end_date = "1.5.2014 ";

$reference_start_time = strtotime(str_replace(".", "-", $reference_start_date);
$reference_end_time = strtotime(str_replace(".", "-", $reference_end_date);

$comparative_start_time = strtotime(str_replace(".", "-", $comparative_start_date);
$comparative_end_time = strtotime(str_replace(".", "-", $comparative_end_date);

if($comparative_start_time>$reference_start_time && $comparative_start_time<$reference_end_time)
{
    echo "Not OK";
}
else if($comparative_end_time>$reference_start_time && $comparative_end_time<$reference_end_time)
{
    echo "Not OK";
}
else if($comparative_start_time<$reference_start_time && $comparative_end_time>$reference_end_time)
{
     echo "Not OK";
}
else
{
     echo "OK";
}
票数 0
EN

Stack Overflow用户

发布于 2014-07-19 10:39:12

你可以这样做:

检查Reference_start >= comparative_start && Reference_end < comparative_end,如果此条件变为真,您的时间将重叠。

票数 0
EN

Stack Overflow用户

发布于 2014-07-19 10:41:20

如果您有一个reference句点(有startDate和endDate),并且有一个comparative句点,那么可以在MySQL中使用这个where子句:

代码语言:javascript
复制
where ((reference.startDate > comparative.endDate) or reference.endDate < comparative.startDate)

如果这两个句点没有交集的话,这将是真的。

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

https://stackoverflow.com/questions/24839380

复制
相关文章

相似问题

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