我正在尝试用PHP构建一个函数,根据日期的不同,该函数将提供给我
当前周(周一至周日)12年8月20日至12年8月26日
关注week+1 (星期一)12/8/12到02/9/12
关注week+2 (mon-sun) 12年9月9日至12年9月9日
遵循week+3 (mon-sun)
遵循week+4 (mon-sun)
遵循week+5 (mon-sun)
我试过使用以下方法,但有没有更干净的方法??
$week0_mon = date("Y-m-d", strtotime(date("Y").'W'.date('W')."1"));
$week0_sun = date("Y-m-d", strtotime(date("Y").'W'.date('W')."7"));
$week1_mon = date("Y-m-d", strtotime(date("Y-m-d", strtotime($week0_mon)) . " +1 week"));
$week1_sun = date("Y-m-d", strtotime(date("Y-m-d", strtotime($week0_sun)) . " +1 week"));
echo $week0_mon.' to '.$week0_sun.'<br />';
echo $week1_mon.' to '.$week1_sun.'<br />';发布于 2012-08-22 16:02:52
我是这样做的。我不确定这是否是你想要的。
function plus_week($addWeek){
$date = date("d.m.Y",time());
$newdate = strtotime ( '+'.$addWeek.' week' , strtotime ( $date ) ) ;
$newdate = date ( 'd/m/y' , $newdate );
return $newdate;
}
for($i = 1; $i < 7; $i++){
echo "Following week+".$i." ".plus_week($i)." to ".plus_week($i+1)."<br/>";
}从这里你会得到这样的答案:
关注week+1 29/08/12至05/09/12
关注week+2 05/09/12至12/09/12
关注week+3 12/09/12至19/09/12
关注week+4 19/09/12至26/09/12
关注week+5 26/09/12至03/10/12
关注week+6 03/10/12至10/10/12
发布于 2012-08-22 16:20:39
也许这会解决你的问题,它会计算前一个星期一,并从这里开始一次添加一周。只需编辑for即可
$dOffsets = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
$prevMonday = mktime(0,0,0, date("m"), date("d")-array_search(date("l"),$dOffsets), date("Y"));
$oneWeek = 3600*24*7;$toSunday = 3600*24*6;
for ($i=0;$i<= 5;$i++)
{
echo "Week +",$i," (mon-sun) ",
date("d/m/Y",$prevMonday + $oneWeek*$i)," to ",
date("d/m/Y",$prevMonday + $oneWeek*$i + $toSunday),"<br>";
}这给了我
Week +0 (mon-sun) 20/08/2012 to 26/08/2012
Week +1 (mon-sun) 27/08/2012 to 02/09/2012
Week +2 (mon-sun) 03/09/2012 to 09/09/2012
Week +3 (mon-sun) 10/09/2012 to 16/09/2012
Week +4 (mon-sun) 17/09/2012 to 23/09/2012
Week +5 (mon-sun) 24/09/2012 to 30/09/2012发布于 2012-08-22 16:24:33
我调整了@Wr1t3r答案,给出了正确的日期范围,如下所示:
function plus_week($addWeek=0){
$last_monday_timestamp=strtotime('-'.(date('N')-1).' days');
if($addWeek!=0){
if($addWeek>0) $addWeek='+'.$addWeek;
$last_monday_timestamp=strtotime($addWeek.' week', $last_monday_timestamp);
}
$end_week_timestamp = strtotime ('+6 days', $last_monday_timestamp);
return date('d/m/y', $last_monday_timestamp).' to '.date('d/m/y', $end_week_timestamp);
}date('N')将得到工作日的数字mon-sun (1-7),所以如果我们从这个数字中减去1,我们就知道要返回到上周一有多少天。或者我们可以使用strtotime(‘上个星期一’)。但是这种方式确保了我们不会回到上周一,如果我们现在在周一。
Monday=1 so (1-1=0) -0天=今天
Friday=5 so (5-1=4) -4天=星期一
SUNDAY=7 (如果我们使用‘w’,就不是0)所以(7-1=6) -6天=星期一(不是明天)
我还调整了它,使其周数也为负数。
https://stackoverflow.com/questions/12068465
复制相似问题