1

再会,

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

第 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 函数。尽管我仍然无法为这种日期序列制定适当的论据。

任何帮助将不胜感激。

谢谢你。

4

2 回答 2

1

最好使用 DateTime 几个间隔:

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

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

您希望间隔 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();
}
于 2013-07-08T18:23:30.497 回答
0

您可以通过将值保存在变量中来做到这一点:

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

解释:

7(七月)+ 4个月= 11个月(十一月)

7月 8 日+ 3天 = 7月 11 日

输出:11-11-13

注意:仅对于我已将值硬编码的示例,您可以使它们动态化。

于 2013-07-08T18:30:30.280 回答