首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日期范围问题

日期范围问题
EN

Stack Overflow用户
提问于 2010-12-20 16:09:53
回答 3查看 1K关注 0票数 0

如果我有两次约会,21/05/201023/05/2010,我如何才能知道22/05/2006 7:16 AM是否存在于他们之间?

我正在使用下面的代码来计算min/max日期,然后将选择表中所有清楚更新它们的记录。

代码语言:javascript
运行
复制
    $today = date('l');

    if($today == 'Wednesday'){
        $min = date('d/m/Y', strtotime('0 days'));
        $max = date('d/m/Y', strtotime('+6 days'));
    }else if($today == 'Thursday'){
        $min = date('d/m/Y', strtotime('-1 days'));
        $max = date('d/m/Y', strtotime('+5 days'));
    }else if($today == 'Friday'){
        $min = date('d/m/Y', strtotime('-2 days'));
        $max = date('d/m/Y', strtotime('+4 days'));
    }else if($today == 'Saturday'){
        $min = date('d/m/Y', strtotime('-3 days'));
        $max = date('d/m/Y', strtotime('+3 days'));
    }else if($today == 'Sunday'){
        $min = date('d/m/Y', strtotime('-4 days'));
        $max = date('d/m/Y', strtotime('+2 days'));
    }else if($today == 'Monday'){
        $min = date('d/m/Y', strtotime('-5 days'));
        $max = date('d/m/Y', strtotime('+1 days'));
    }else if($today == 'Tuesday'){
        $min = date('d/m/Y', strtotime('-6 days'));
        $max = date('d/m/Y', strtotime('0 days'));
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-20 16:18:03

日期::diff

在21/05/2010和22/05/2006之间创建一个日期时间::diff 7:16,以及日期时间::diff在23/05/2010和22/05/2006之间7:16

然后检查第一个DateTime::diff是> 0,第二个是< 0

Update :Update日期时间::createFromFormat,它是php5.3方法

Update2 :经过测试的代码示例。产生预期的产出。

代码语言:javascript
运行
复制
<?php
$datetime_lower = DateTime::createFromFormat('d/m/Y', '21/05/2010');
$datetime_upper = DateTime::createFromFormat('d/m/Y', '23/05/2010');
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', '22/05/2006 7:16 AM');

var_dump($datetime_lower < $datetime_compare);
var_dump($datetime_upper > $datetime_compare);

if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) {
    echo " + date is between";
} else {
    echo " date is not between";
}

此外,还有一个过程比较函数。

票数 4
EN

Stack Overflow用户

发布于 2010-12-20 16:19:31

使用strtotime

代码语言:javascript
运行
复制
 $date1 = strtotime($date1);
 $date2 = strtotime($date2);
 $datefind = strtotime($datefind);

 if ($datefind >= $date1 &&  $datefind <= $date2)
票数 2
EN

Stack Overflow用户

发布于 2010-12-20 16:14:12

爆炸您的日期,并使用mktime()中的部分来获取它们的时间戳值。然后,简单地检查您的时间戳是否大于或小于其他时间戳。

http://php.net/manual/en/function.mktime.php

伪码:

代码语言:javascript
运行
复制
$parts= explode("/", "21/05/2010");
$timestamp1= mktime($parts[0], $parts[1], ...);

if($timestamp1 < $timestamp2...) {
    print "timestamp1 is older then timestamp2";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4491424

复制
相关文章

相似问题

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