首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个日期范围内找到相同的日期/天

如何在两个日期范围内找到相同的日期/天
EN

Stack Overflow用户
提问于 2010-10-05 20:50:48
回答 3查看 589关注 0票数 1

我想找出two periods之间的共同days/dates

例如

代码语言:javascript
复制
period1: 25-10-2010 to 25-11-2010
period2: 10-11-2010 to 10-12-2010

在这里,15 days10-1125-11是很常见的。如何在PHP或Zend Framework中找到它。

EN

回答 3

Stack Overflow用户

发布于 2010-10-05 21:11:52

代码语言:javascript
复制
$nb_days = (strtotime($period1[1])-strtotime($period2[0])) / 86400

应该行得通。

票数 0
EN

Stack Overflow用户

发布于 2010-10-05 21:18:06

使用NullUserException建议的方法

代码语言:javascript
复制
date_default_timezone_set('GMT');


$period1 = array('25-10-2010','25-11-2010');
$period2 = array('10-11-2010','10-12-2010');

$p1 = range(strtotime($period1[0]),strtotime($period1[1]),86400);
$p2 = range(strtotime($period2[0]),strtotime($period2[1]),86400);

$r = array_intersect($p1,$p2);

foreach($r as $date) {
 echo $date,' - ',date('d-M-Y H:i:s',$date),'<br />';
}
票数 0
EN

Stack Overflow用户

发布于 2020-01-08 13:20:54

有关更多信息,请参阅以下内容:https://stackoverflow.com/a/2970328/781153

以及相应的PHP代码:

代码语言:javascript
复制
$period1 = ['25-10-2010', '25-11-2010'];
$period2 = ['10-11-2010', '10-12-2010'];
$dates = [
    'p1start' => new DateTime($period1[0]),
    'p1end' => new DateTime($period1[1]),
    'p2start' => new DateTime($period2[0]),
    'p2end' => new DateTime($period2[1])
];
$start = max($dates['p1start'], $dates['p2start']);
$end = min($dates['p1end'], $dates['p2end']);
$days = $start->diff($end);
var_dump($days);

结果:

代码语言:javascript
复制
object(DateInterval)[694]
[...]
  public 'invert' => int 0
  public 'days' => int 15
[...]

请注意,如果没有公用日,则invert属性可能为1。在没有重叠的情况下获得零天数的解决方案是:

代码语言:javascript
复制
$commonDays = $start > $end ? 0 : $start->diff($end)->days;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3863754

复制
相关文章

相似问题

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