Php 如何计算两天之间的周起始日?

Php 如何计算两天之间的周起始日?,php,symfony1,Php,Symfony1,例如— Day1 2011-03-28 Day2 2011-04-25 周起始日 2011-03-28 2011-4-4 2011-4-11 2011-4-18 2011-04-25 我不知道PHP,但从逻辑上讲,你不能得到这些日期之间的第一个星期一,然后递归地增加7天来得到每个星

例如—

        Day1    2011-03-28
        Day2    2011-04-25
周起始日

                 2011-03-28
                 2011-4-4
                 2011-4-11
                 2011-4-18
                 2011-04-25

我不知道PHP,但从逻辑上讲,你不能得到这些日期之间的第一个星期一,然后递归地增加7天来得到每个星期一,直到它超过提供的最终日期为止?

函数print\u Monday\u dates($startdate,$enddate)
function print_monday_dates($startdate, $enddate)
{
  if (date('N', $startdate) != 1)
    $startdate = strtotime("next monday", $startdate);

  while ($startdate <= $enddate)
  {
    echo date("Y-m-d", $startdate)."\n";
    $startdate = strtotime("next monday", $startdate);
  }
}

echo print_monday_dates(strtotime("2011-03-28"), strtotime("2011-04-25"));
{ 如果(日期('N',$startdate)!=1) $startdate=strottime(“下周一,$startdate”); 而($startdate则尝试此功能

  function getAllMondays($startdate, $enddate) {
    $res = array();
    $tstart = strtotime($startdate);
    $tend = strtotime($enddate);
    if (date('N', $tstart) == 1) $res[] = date('Y-m-d', $tstart);
    while ($tstart <= $tend) {
      $tstart = strtotime('next monday', $tstart);
      $res[] = date('Y-m-d', $tstart);
      }
    return $res;
    }
得到这样的东西

Array
(
    [0] => 2011-03-28
    [1] => 2011-04-04
    [2] => 2011-04-11
    [3] => 2011-04-18
    [4] => 2011-04-25
)

Injoy

请指出为什么的5000多个副本中没有一个没有回答您的问题。因为他太懒了,不愿意搜索?因为我无法决定哪一个副本最适合这个(他们中的许多人都这么做),所以我关闭这个,因为它太本地化了。用递归来实现这一点是没有意义的。对不起-应该说循环:-)如果$startdate不是星期一不起作用,它也会打印出这一天。例如
$startdate=strotime(“2011-03-27”)
。感谢您指出这一点。编辑后的答案应该是固定的。编辑:啊,现在如果日期是星期一就不起作用了。我将借用您的
如果(date('N',$tstart)==1)
:)再次出错…如果$stardate实际上是星期一,则函数中的第一行跳过了输出中的第一个星期一。例如,使用条件
date('N')==1
要检查$startday是否为星期一,请将其打印出来,否则将跳过第一次约会。但是,测试您的代码,您将看到列表中没有2011-03-28。我注意到,谢谢。现在应该终于可以了。干杯……现在它工作得很好!
Array
(
    [0] => 2011-03-28
    [1] => 2011-04-04
    [2] => 2011-04-11
    [3] => 2011-04-18
    [4] => 2011-04-25
)