代码之家  ›  专栏  ›  技术社区  ›  rob.m

如何检查一个数字是否在两个数字(或日期)之间?[复制品]

php
  •  0
  • rob.m  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我从get得到两个值

    $start = $_GET['start']; 
    $end = $_GET['end'];
    

    这些是:

    1-11-2018
    30-11-2018
    

    然后我把 dash 创建整数

    $start = str_replace(["-", "–"], '', $start);
    $end = str_replace(["-", "–"], '', $end);
    

    现在我们有:

    1112018
    30112018
    

    然后我们对日志进行循环(我们只有两个日志),并从自定义字段中获取值:

    $myDate = get_post_meta($id, 'usp-custom-80', TRUE);
    

    这给了我们:

    13-11-2017
    26-11-2018
    

    然后我们这样做:

    $myDate = str_replace(["-", "–"], '', $start);
    

    我们有:

    13112017
    26112018
    

    现在我们可以检查 value 我们从 custom field 是否在 values 我们来自 GET

    if (($myDate >= $start) && ($myDate <= $end)) {
      //content....
    

    但是我把逻辑搞错了,也因为 得到 可能有 1 没有 zero 开始的时候 01 如果实际日期是正确的,这个数字就更少了。

    我知道怎么检查 $myDate 介于两者之间 $start $end ?

    更新

    如果我不删除破折号,我得到:

    Start date: 1-11-2018
    End date: 30-11-2018 
    User date: 13-11-2017
    

    然后我就这么做了:

    if ( ( $myDate >= $start) && ( $myDate <= $end) ) {
    

    我得到所有的帖子,而不是过滤范围

    2 回复  |  直到 6 年前
        1
  •  0
  •   A l w a y s S u n n y    6 年前

    你可以使用 strtotime() 要分析日期,请比较以下日期-

         $start  = strtotime('1-11-2018');
         $end  = strtotime('30-11-2018');  
         $myDate = strtotime('13-11-2017');
         if ( ( $myDate >= $start) && ( $myDate <= $end) ) {
            ......
            // your other code goes here
         }
    
        2
  •  1
  •   A l w a y s S u n n y    6 年前

    你可以用这种方法 DateTime 类,

    <?php
    $myDate = new DateTime('26-11-2018'); // 13-11-2017 is not between you can test
    $start = new DateTime('1-11-2018');
    $end = new DateTime('30-11-2018');
    
    if ($myDate > $start && $myDate < $end ){
      echo "Date is between";
    }else{
       echo "Date is not between!";  
    }
    ?>
    

    演示: https://3v4l.org/Grv1X