我从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) ) {
我得到所有帖子,而不是按范围过滤
答案 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!";
}
?>
答案 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
}