首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与今日日期相同的日期

与今日日期相同的日期
EN

Stack Overflow用户
提问于 2016-08-16 14:31:09
回答 1查看 76关注 0票数 0

在php中询问日期函数,我想在一周内(星期一至星期六)创建一个日期范围,该日期在下拉选项中与今天的日期相等。假设今天8月16日,范围将于8月15日至8月20日、8月22日至27日、8月29日至9月3日开始,等等。

我使用这个语法

代码语言:javascript
复制
<?php
  for ($i = 0; $i < 8; $i++) {
    echo '<option value="'.date("Ymd", strtotime("$i weeks monday")).'">'.date("d F", strtotime("$i weeks monday"))." - ".date("d F", strtotime("$i weeks saturday")).'</option>';
    }
  }
?>

它只在星期一才能正常工作,但是第二天当我打开网络的时候,它会在下周的星期一显示所有选项。似乎星期一过去了,这个星期一就不在这个星期的名单上了,下个星期一就变成了这个星期的星期一。它是一个带有strtotime的bug,还是有一个更好的strtotime语法可以使用?如果可能的话,我想避免使用If来检查日期,但是如果不是,那么在strtotime中是否有可能使用简单的语法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-16 14:44:01

这是很难做到的strtotime()和双倍,所以作为一条线。但是,使用这是相关的课程可以让事情变得简单明了。

代码语言:javascript
复制
$start    = new DateTimeImmutable('Monday this week');
$end      = $start->add(new DateInterval('P8W'));
$interval = new DateInterval('P1W');
$period   = new DatePeriod($start, $interval, $end);
foreach ($period as $week) {
    $monday   = $week->format('Ymd');
    $saturday = $week->modify('next Saturday')->format('Ymd');

    printf('<option value="%s">%s - %s</option>', $monday, $monday, $saturday);
}

演示

这里发生的是:

  1. 使用DateTimeImmutable()创建我们的开始日期,即当前周的星期一
  2. 将我们的截止日期设置为8周后(使用DateInterval())
  3. 将循环的间隔设置为一个星期的时间段。
  4. 将其全部放入可以迭代的DatePeriod()对象中。
  5. 获取我们星期一约会的格式
  6. 获取我们星期六约会的格式
  7. <option>标记中回显它(使用printf(),以便在我们的代码中更易读)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38977639

复制
相关文章

相似问题

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