我正在使用下面的代码来每14天显示一个新的列表项。开始日期为2020-02-01,结束日期为2020-12-31.在开始日期不会显示任何列表项。在2020-02-15上,将显示第一个列表项.在2020-02-29上,将显示第二个列表项.这将继续每14天,直到结束日期达到。
列表项来自WordPress循环,因此我不确定这段代码是否可以使用date_query合并到WP查询中,还是应该保持独立并在查询之后运行。
<?php
// Set the default timezone.
date_default_timezone_set('America/Edmonton');
$startDate = new DateTime('2020-02-01 00:00:00');
$endDate = new DateTime('2020-12-31 00:00:00');
$dateRange = new DatePeriod($startDate, new DateInterval('P14D'), $endDate);
$b = new DateTime('-14 days');
?>
<ul>
<?php foreach($dateRange as $date): ?>
<?php $diff = $date->diff($b); ?>
<?php if($diff->days <= 14): ?>
<li>
<?php echo $date->format('Y-m-d'); ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>电流输出
输出结果不像预期的那样,我需要一些帮助来修复我的代码,因为我是一个PHP新手。
所有的帮助都是非常感谢的。
发布于 2020-01-17 22:34:14
不如:
// We start at your given start date
$startDate = new DateTime("2020-02-01");
// We define a date when to stop additional list items
$endDate = new DateTime("2020-12-31");
// We define the current time
$now = new DateTime();
// Modify date on the fly, by given time frame (readability)
// Ensures to display dates only between start+14day && end
while ($startDate->modify("+14 days") < $now && $startDate < $endDate) {
echo '<li>' . $startDate->format("Y-m-d") . '</li>';
}发布于 2020-01-17 22:36:31
我已经测试过这个了,它起作用了:
<?php
// Set the default timezone.
date_default_timezone_set('America/Edmonton');
$startDate = new DateTime('2020-02-01 00:00:00');
$startDate->modify('+14 days');
$endDate = new DateTime('2020-12-31 00:00:00');
$dateRange = new DatePeriod($startDate, new DateInterval('P14D'), $endDate);
?>
<ul>
<?php foreach($dateRange as $date) { ?>
<li>
<?php echo $date->format('Y-m-d'); ?>
</li>
<?php } ?>
</ul>我添加了$endDate->modify('+14 days');,它改变了时间戳(增加了2周的时间戳)。因为$dateRange每两周返回一个时间戳,所以我删除了if语句。您可以了解更多关于date->modify() 这里的知识。
https://stackoverflow.com/questions/59795452
复制相似问题