如何定义重复年度间隔的相对时间?

时间:2013-06-15 13:46:12

标签: php datetime relative-date

我正在寻找一种方法来过滤每年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日。 (如果它们存在。)

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 ')