-1

我正在寻找一种方法来过滤每年 9 月(1 日)和即将到来的 9 月(1 日)之间发生的事件。由于过滤器已经是现有代码的一部分,我只能添加固定日期(时间戳)或使用通过 php strtotime 运行的相对日期。我无法在现场运行任何 php。

因为时间戳是固定的,所以我想使用相对日期来使这个过滤器每年都工作。

我尝试使用简单的东西来构建这个过滤器[last/next] September,但这是无效的 strtotime 语法。

从那里我尝试了类似的东西9/1 [last/this/next] year。它们是有效的,但由于我无法使用逻辑来确定使用哪一个,所以不好。

  • 对于今年 9 月 1 日之前的日期,过滤器将是9/1 last year>9/1 this year
  • 对于今年 9 月 1 日之后的日期,它是9/1 this year> 9/1 next year

总而言之,我正在寻找一个相对日期字符串 (strtotime) 来获取上一个 9 月 1 日和一个用于即将到来的 9 月 1 日的字符串。(如果它们存在。)

4

1 回答 1

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 ')
于 2013-06-15T15:28:23.260 回答