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
)