【问题标题】:How to get every specific days of week within given date range in PHP?如何在PHP的给定日期范围内获取一周中的每一天?
【发布时间】:2015-10-03 13:10:15
【问题描述】:

这给了我日期范围内的每个星期一的日期。

问题:如何获取每周的每个星期一和星期五?

$start_date = date('Y-m-d');
$end_date = date('Y-m-d', strtotime($start_date . ' + 1 MONTH'));

for(
    $i = strtotime('Monday', strtotime($start_date)); 
    $i <= strtotime($end_date); 
    $i = strtotime('+1 WEEK', $i)
) {
    echo date('Y-m-d', $i). '<br>';
}

我的更新:

$my_dates = [];
for(
    $i = strtotime($start_date); 
    $i <= strtotime($end_date); 
    $i = strtotime('+1 DAY', $i)
) {
    if(in_array(date('N', $i), array(1, 5))) {
        $my_dates[] = date('Y-m-d', $i);
    }
}

var_dump($my_dates);

【问题讨论】:

  • 周一和周五之间只有这么多秒。
  • 你可以遍历所有的日子并比较date("N")的值(1是星期一)
  • 你的预期输出是什么
  • @Uchiha 日期范围内的每个星期一/星期五日期(开始/结束日期)

标签: php date schedule dayofweek


【解决方案1】:

看看名为When 的库,它是“PHP 5.3+ 的日期/日历递归库”

假设下个月的 MF 时间表:

$now = new DateTime('NOW');
$till = clone $now;
$till->modify('+1 month');

$r = new When();
$r->startDate($now)
  ->freq("weekly")
  ->until($till)
  ->byday(array('MO', 'FR'))
  ->generateOccurrences();

$occurrences = $r->occurrences;

【讨论】:

    【解决方案2】:

    如果我没记错的话,您可以像 as 一样简单地使用 for 循环

    $start = "2015-09-01";
    $end = date('Y-m-d',  strtotime("$start +1 months"));
    $period = floor((strtotime($end) - strtotime($start))/(24*60*60));
    
    for($i = 0; $i < $period; $i++){
        if(in_array(date('l',strtotime("$start +$i day")),["Monday","Friday"]))
            echo date('l d M, Y',strtotime("$start +$i day"))."\n";
    }
    

    输出:

    Friday 04 Sep, 2015
    Monday 07 Sep, 2015
    Friday 11 Sep, 2015
    Monday 14 Sep, 2015
    Friday 18 Sep, 2015
    Monday 21 Sep, 2015
    Friday 25 Sep, 2015
    Monday 28 Sep, 2015
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 2020-10-09
      • 2014-06-06
      • 1970-01-01
      相关资源
      最近更新 更多