在PHP中重复出现日期函数

时间:2013-07-08 18:17:21

标签: php datetime strtotime

美好的一天,

我正在尝试创建一个具有以下内容的重复日期系统:

第n个月的第n天(每3个月的第2天)

$this_months_friday = strtotime('+3 days +4 months');

输出将始终是当天+第4个月的3天。

如何让它显示第n个月的第n天?

因为我也试过

$this_months_friday = strtotime('every 3 days +4 months');

并没有返回任何结果。我应该坚持使用strtotime这个或移动到PHP的DateTime功能。虽然我仍然无法为这种日期序列制定正确的论据。

非常感谢任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:1)

使用DateTime和几个间隔可能会更好:

$d = new DateTime();
$d->add(new DateInterVal('P' . $days . 'D'))->add('new DateInterVal('P' . $months . 'M'));

不确定你想要的两个示例间隔是什么。

你想要一个internval在4个月内开始,然后每3天重复一次?

这更像是

$d = new DateTime();
$d->add(new DateInterval('P4M')); // jump ahead 4 months immediately
$day3 = new DateInterval('P3D');

for ($i = 0; $i < 100; $i++) {
   $d->add($day3); // jump ahead 3 days
   ... do something with this new date
}

对于基本的重复活动,+ 4个月+ 3天,您只需要一个间隔:

$interval = new DateInteval('P4M3D'); // +4 months +3 days
$date = new DateTime();
while($some_condition) {
   $date->add($interval);
   do_something();
}

答案 1 :(得分:0)

您可以通过在以下变量中保存值来执行此操作:

    $day=3;
    $month=4;
    echo date("d-m-y",strtotime('+'.$day .'days' .'+'.$month.'months'));

说明:

7 (7月)+ 4 月= 11 月(11月)

8 7月+ 3 天= 11 7月

输出: 11-11-13

注意:仅作为示例我将值设置为硬编码,您可以将它们设置为动态。