首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP每14天显示新的列表项

问使用PHP每14天显示新的列表项
EN

Stack Overflow用户
提问于 2020-01-17 22:06:55
回答 2查看 369关注 0票数 2

我正在使用下面的代码来每14天显示一个新的列表项。开始日期为2020-02-01,结束日期为2020-12-31.在开始日期不会显示任何列表项。在2020-02-15上,将显示第一个列表项.在2020-02-29上,将显示第二个列表项.这将继续每14天,直到结束日期达到。

列表项来自WordPress循环,因此我不确定这段代码是否可以使用date_query合并到WP查询中,还是应该保持独立并在查询之后运行。

代码语言:javascript
复制
<?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>

电流输出

  • 2019-12-29
  • 2020年-01-12

输出结果不像预期的那样,我需要一些帮助来修复我的代码,因为我是一个PHP新手。

所有的帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-17 22:34:14

不如:

代码语言:javascript
复制
// 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>';
}
票数 0
EN

Stack Overflow用户

发布于 2020-01-17 22:36:31

我已经测试过这个了,它起作用了:

代码语言:javascript
复制
<?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() 这里的知识。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59795452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档