我正在寻找一种方法来过滤每年9月(1日)和即将到来的9月(1日)之间发生的事件。由于过滤器已经是现有代码段的一部分,因此我可以添加固定日期(时间戳)或使用通过php strtotime运行的相对日期。我无法在现场运行任何PHP。
由于时间戳固定为设定年份,因此我希望使用相对日期来使此过滤器每年都有效。
我尝试使用[last/next] September
之类的简单内容构建此过滤器,但这是无效的strtotime语法。
从那里我尝试了9/1 [last/this/next] year
之类的东西。它们是有效的,但由于我不能使用逻辑来确定使用哪一个,所以它并不好。
9/1
last year
> 9/1 this year
9/1 this year
> 9/1 next year
。 总而言之,我正在寻找一个相对日期字符串(strtotime)来获取前一个9月1日和一个字符串,用于即将到来的9月1日。 (如果它们存在。)
答案 0 :(得分:0)
我想你想在2012/09/01 - 2013/09/01之间约会。
你可以在链接中使用字符串,如果这是你所说的,但你需要多年。
$this_year='2013/09/01';
$last_year = date("Y-m-d",strtotime("$this_year - 1 year"));
$next_year = date("Y-m-d",strtotime("$this_year + 1 year"));
echo
"<a href=\"?date_filter=$this_year\"> last year</a>
<a href=\"?date_filter=$this_year\"> this year</a>
<a href=\"?date_filter=$next_year\"> next year</a>
";
if(strtotime($this_year) <= strtotime($filter_date) and strtotime($filter_date) >= strtotime($last_year))
{
// dates in between 2012/09/01 - 2013/09/01
}
if(strtotime($this_year) >= strtotime($filter_date) and strtotime($filter_date) <= strtotime($next_year))
{
// dates in between 2013/09/01 - 2014/09/01
}
如果您从数据库获取数据,则使用下面的代码更容易。
SELECT * FROM table_name WHERE 'date_field' BETWEEN ('$this_year') and ('$last_year ')