PHP日期:下3周每周一(谷歌日历翻拍)

PHP日期:下3周每周一(谷歌日历翻拍),php,mysql,date,datetime,Php,Mysql,Date,Datetime,我正在制作一个CRM系统,现在我需要提供给人们制作重复事件。为此,他们将必须填写,如果它是每天,每周,每月或每年,以及一切像你在谷歌日历上这样做 但是如何在数组中获取“下一个3周的星期一”的日期呢?最好的方法是使用DateTime和DatePeriod类。这是现在处理日期最正确的方法。它自动处理时区和DST转换。这正是你必须做的 $int_count = 3; // How many to repeat $date = new \DateTime('next monday'); $result

我正在制作一个CRM系统,现在我需要提供给人们制作重复事件。为此,他们将必须填写,如果它是每天,每周,每月或每年,以及一切像你在谷歌日历上这样做


但是如何在数组中获取“下一个3周的星期一”的日期呢?

最好的方法是使用
DateTime
DatePeriod
类。这是现在处理日期最正确的方法。它自动处理时区和DST转换。这正是你必须做的

$int_count = 3; // How many to repeat
$date = new \DateTime('next monday');
$result = array($date->format('Y-m-d'));
for ($i=1; $i<$int_count; $i++) { 
    $result[] = $date->modify('+1 week')->format('Y-m-d'); 
}

print_r($result);
$daterange = new DatePeriod(new DateTime('next monday'), new DateInterval('P1W'), 2);

$dates = [];
foreach($daterange as $date) $dates []= $date->format("Y-m-d H:i:s");

print_r($dates);
结果将是:

Array
(
    [0] => 2015-01-26 00:00:00
    [1] => 2015-02-02 00:00:00
    [2] => 2015-02-09 00:00:00
)

您正在将新技术(
DateTime
class)与旧技术(不使用
DatePeriod
iterator)混合使用。看我的答案,它是Cleaners说的第一个答案(删除后)是使用strotime。。。你当然可以使用迭代器,但是这两个答案在功能上是相同的,我想说这一个对于新手来说更清楚,但是YMMV。
Array
(
    [0] => 2015-01-26 00:00:00
    [1] => 2015-02-02 00:00:00
    [2] => 2015-02-09 00:00:00
)