【发布时间】:2015-01-20 02:53:17
【问题描述】:
我正在制作一个 CRM 系统,我现在需要为人们提供重复性活动。为此,他们必须填写每天、每周、每月或每年,以及您在 Google 日历中填写的所有内容。
但是,例如,我如何在数组中获取“接下来 3 周的星期一”的日期?
【问题讨论】:
我正在制作一个 CRM 系统,我现在需要为人们提供重复性活动。为此,他们必须填写每天、每周、每月或每年,以及您在 Google 日历中填写的所有内容。
但是,例如,我如何在数组中获取“接下来 3 周的星期一”的日期?
【问题讨论】:
$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);
结果:
Array
(
[0] => 2015-01-26
[1] => 2015-02-02
[2] => 2015-02-09
)
【讨论】:
DateTime 类)与旧技术(不使用 DatePeriod 迭代器)混合在一起。看我的回答,它更干净
最好的方法是使用DateTime 和DatePeriod 类。这是现在处理日期最正确的方法。它自动处理时区和 DST 转换。这就是你必须这样做的方式。
$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
)
【讨论】: