如何检查数字是否在两个数字(或日期)之间?

时间:2018-11-15 05:31:56

标签: php

我从GET中获得了两个值

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

这些是:

1-11-2018
30-11-2018

然后我删除dash以创建一个整数

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

现在我们有:

1112018
30112018

然后,我们对帖子进行循环(只有2个帖子),然后从自定义字段中获取值:

$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....

但是我弄错了逻辑,这也是因为GET的日期可能在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 个答案:

答案 0 :(得分:1)

您可以简单地通过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

答案 1 :(得分:0)

您可以使用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
     }